::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-07 21:54:22, Hit : 4955, Vote : 1222
 모든 드라이브,디렉토리 검색하여 파일 찾기

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    FScanAborted: Boolean;
  public
    { Public declarations }
    function ScanDrive(root, filemask: String; hitlist: TStrings): Boolean;
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

function TForm1.ScanDrive(root, filemask: String; hitlist: TStrings): Boolean;
  function ScanDirectory(var path: String): Boolean;
  var
    SRec: TSearchRec;
    pathlen: Integer;
    res: Integer;
  begin
    Label1.caption := path;
    pathlen:= Length(path);

    res := FindFirst(path+filemask, faAnyfile, SRec);
    if res = 0 then
    try
      while res = 0 do
      begin
        hitlist.Add(path + SRec.Name);
        res := FindNext(SRec);
      end;
    finally
      FindClose(SRec)
    end;
    Application.ProcessMessages;
    Result := not (FScanAborted or Application.Terminated);
    if not Result then Exit;

    res := FindFirst(path+'*.*', faDirectory, SRec);
    if res = 0 then
    try
      while (res = 0) and Result do
      begin
        if ((Srec.Attr and faDirectory) = faDirectory) and
           (Srec.name <> '.') and
           (Srec.name <> '..') then
        begin
          path := path + SRec.name + '';
          Result := ScanDirectory(path);
          SetLength(path, pathlen);
        end;
        res := FindNext(SRec);
      end;
    finally
      FindClose(SRec)
    end;
  end;
begin
  FScanAborted := False;
  Screen.Cursor := crHourglass;
  try
    Result := ScanDirectory(root);
  finally
    Screen.Cursor := crDefault
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ch: Char;
  root: String;
begin
  root := 'C:';
  for ch := 'A' to 'Z' do
  begin
    root[1] := ch;
    case GetDriveType(Pchar(root)) Of
      DRIVE_FIXED, DRIVE_REMOTE:
        if not ScanDrive(root, edit1.text, listbox1.items) then
          Break;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  fScanAborted := True;
end;

end.





611   [일반/컴포넌트] 모서리가 둥근(rounded ends) TMemo 만들기  김영대 2004/07/25 4838 1215
610   [윈도우즈 API] 모서리가 둥근(rounded ends) TEdit 만들기  김영대 2003/03/07 5219 1329
609   [윈도우즈 API] 모든 창을 아이콘 표시/취소  김영대 2003/03/07 4486 1265
  [일반/컴포넌트] 모든 드라이브,디렉토리 검색하여 파일 찾기  김영대 2003/03/07 4955 1222
607   [네트웍/인터넷] 모든 TCP/IP interfaces 의 IP/Netmask 구하기  김영대 2003/03/07 5868 1299
606   [데이터베이스] 몇가지 BDE 환경정보 구하기  김영대 2003/03/07 4588 1205
605   [일반/컴포넌트] 명령행 인자(command line argument) 사용하기  김영대 2003/03/05 5228 1363
604   [일반/컴포넌트] 명령행 인자 받아오기  김영대 2003/03/05 7459 1913
603   [일반/컴포넌트] 메인메뉴가 팝업될때 이벤트를 탈수있는방법  김영대 2003/03/07 6740 1751
602   [시스템] 메모리 부하(load)량 측정해 보기  김영대 2003/03/05 5553 1305
601   [윈도우즈 API] 메모(TMemo)의 커서(캐럿)모양 바꾸기  김영대 2003/03/05 5215 1958
600   [일반/컴포넌트] 메뉴의 잘못된 accelerator 를 선택했을때  김영대 2003/03/05 6536 1857
599   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 8130 1309
598   [시스템] 마이크 볼륨 조절하기  김영대 2003/03/06 4871 1336
597   [일반/컴포넌트] 마우스커서를 특정위치로 이동시키기  김영대 2003/03/05 6222 1247
596   [시스템] 마우스의 좌/우 기능설정과 버튼갯수 알기  김영대 2003/03/06 7642 2071
595   [시스템] 마우스의 좌,우 버튼의 동작 바꾸기  김영대 2003/03/07 4459 1230
594   [윈도우즈 API] 마우스의 이동범위 제한하기  김영대 2003/03/05 6233 1531
593   [윈도우즈 API] 마우스의 모양 바꾸고 이동범위 제한하기  김영대 2003/03/05 5318 1301
592   [일반/컴포넌트] 마우스영역 제어하기  김영대 2003/03/05 3856 1025
591   [일반/컴포넌트] 마우스를 특정 콤포넌트 위로 위치시키기  김영대 2003/03/05 4464 1136
590   [일반/컴포넌트] 마우스로 ProgressBar의 Position 바꾸기  김영대 2006/02/28 5517 1416
589   [일반/컴포넌트] 마우스가 폼위에 있는지 여부를 알아내려면...  김영대 2003/03/05 5449 1476
588   [시스템] 마우스가 설치되어 있는지 검사하기  김영대 2003/03/07 7077 1890
587   [시스템] 마우스 포인터 속도 바꾸기  김영대 2003/03/06 5254 1295
586   [시스템] 마우스 포인터 속도 구하기  김영대 2003/03/06 5769 1758
585   [일반/컴포넌트] 마우스 커서 보이기/감추기  김영대 2003/03/05 6504 1724
584   [시스템] 마우스 자취(trails)의 갯수 조정하기  김영대 2003/03/06 6164 1896
583   [윈도우즈 API] 마우스 위치의 콘트롤(콤포넌트)을 조사하기  김영대 2003/03/07 4842 1159
582   [윈도우즈 API] 마우스 위치(Desktop)의 색상값 구하기  김영대 2003/03/05 6546 1621
581   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 13494 4155
580   [시스템] 마우스 두 번 누르기 속도 조정하기  김영대 2003/03/06 6212 1863
579   [일반/컴포넌트] 리스트뷰에서 동적으로 칼럼삭제하기  김영대 2003/03/05 7125 1438
578   [일반/컴포넌트] 루틴의 처리시간(경과시간) 구하기  김영대 2003/03/05 4445 1145
577   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 8358 1399
576   [일반/컴포넌트] 레코드 구조를 배열요소로 갖는 정적인 배열  김영대 2003/03/05 4229 1134
575   [윈도우즈 API] 레지스트리의 특정키를 파일로 저장/복원하기  김영대 2003/03/07 6850 1551
574   [윈도우즈 API] 레지스트리의 변경여부 알리는 2가지 방법  김영대 2003/03/06 4979 1329
573   [일반/컴포넌트] 레지스트리의 기본 RootKey 바꾸기  김영대 2003/03/05 4345 1299
572   [일반/컴포넌트] 레지스트리의 "(기본값)" 에 읽고/쓰기  김영대 2003/03/07 4184 1192

[1][2][3][4][5][6][7][8][9] 10 ..[25] [다음 10개]
 

Copyright 1999-2024 Zeroboard / skin by zero