Q&A

  • [급질문] 이함수를 이만번돌리니까 잘못된 변수라구..흑흑... 도와주세요...


안녕하세요...

델파이를시작한지 두달쯤 되는 초보 델이걸입니다...



^^; 꾸뻑



책을 싸메고 공부를 하다가, 이런 함수를 하나 만들긴 만들었는데,

호출을 이만번하니까 죽네요...



흑흑... 살려주세용...



감사...



고수님께서는... 혹씨

하드디스크에 있는 파일을 모두 찾아서 풀패스를 스트링으로 돌리는... 함수하나

만들어 주시면 정말 감사하겠습니다...



------------------------------------------------------------------------



function TfrmMain.IterateDir(Path: String) : boolean;

var

res: Word;

rec: TSearchRec;

begin

Result := True;

if Path[Length(Path)] <> '' then



Path := Path + '';



FillChar(rec, SizeOf(TSearchRec), 0);



res := FindFirst(Path + '*.*', faAnyFile - faVolumeId, rec);



while res = 0 do begin

if (rec.Attr and faDirectory) > 0 then begin

// if (rec.size > 1024) and (rec.attr <> 16) then

if (rec.Name <> '.') and (rec.Name <> '..') then

if IterateDir(Path + rec.Name) = False then begin

Result := False;

Break;

end;

end

else

CheckFile(Path + rec.Name, rec);

res := FindNext(rec);

Application.ProcessMessages;



if dlgSearchFiles = nil then begin

Result := False;

Break;

end;

end;

SysUtils.FindClose(rec);

end;

3  COMMENTS
  • Profile
    구창민 2000.12.16 19:41
    안녕하세요~ 구창민입니다.



    고수는 아니구요 ^_^;



    윈도그즈처럼 파일찾기를 하는 함수를 한번 구현해 보았습니다.



    그러니까, 와일드 카드를 사용할수 있는 함수입니다.



    검색예) '*.doc', 'abc.???', 'a*.txt'..등등.. 윈도우즈에서 검색하는 형태로

    검색하실 수 있습니다.



    저는 리스트박스에 찾은 파일의 풀패쓰와 이름을 쓰게 만들어 두었구요.



    검색도중 취소하고 싶으시면 먼저 searchcheck라는 전역변수를 하나 생성한다음



    취소버튼을 하나 생성하시고, 취소버튼 이벤트 핸들러에 이 문장을 추가하세요.



    searchcheck:= False;



    ^_^;



    검색되고 있는 것을 표현하는 것은 박혜윤님의 몫이겠지요?



    현재 검색중인 디렉토리를 상태바에 표현한다든지 하는 형태로요...^_^;



    그럼 유용히 사용하시고, 항상 즐거운 프로그래밍 하시길~







    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    ListBox1: TListBox;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    procedure FilesSearch( Directory, SearchName: String );

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FilesSearch( Directory, SearchName: String );

    var SR : TSearchRec;

    R : integer;

    begin

    if Directory[Length(Directory)] <> '' then Directory := Directory + '';

    R := Sysutils.FindFirst(Directory + SearchName, faAnyFile, sr);



    while R = 0 do

    begin

    if (SR.Attr <> faDirectory) and (SR.Name[1] <> '.') then

    if sr.FindData.cAlternateFileName <> '' then

    ListBox1.Items.Add(Directory + sr.FindData.cAlternateFileName)

    else

    ListBox1.Items.Add(Directory + sr.FindData.cFileName);

    //아래 라인은 search라는 외부 변수를 만들고 취소버튼을 누를경우 searchcheck:= False 한 경우이다

    //if searchcheck = False then Exit;

    Application.ProcessMessages;

    R := Sysutils.FindNext(sr);

    end;

    SysUtils.FindClose(Sr);



    if FindFirst(Directory + '*.*', faDirectory, SR) = 0 then

    begin

    repeat

    if ((Sr.Attr and faDirectory) = faDirectory) and (SR.Name[1]<>'.') then

    begin

    //아래 라인은 search라는 외부 변수를 만들고 취소버튼을 누를경우 searchcheck:= False 한 경우이다

    //if searchcheck = False then Exit;

    FilesSearch(Directory+SR.Name+'', SearchName); // 재귀호출

    end;

    Application.ProcessMessages;

    until (FindNext(SR) <> 0);

    end;

    SysUtils.FindClose(sr);

    end;







    //사용예) '*.doc', 'abc.???', 'a*.txt'..등등..

    //윈도그즈에서 검색하는 형태로 하실 수 있습니다.

    procedure TForm1.Button1Click(Sender: TObject);

    var Dir: String;

    begin

    ListBox1.Clear;

    Dir:= 'c:';

    FilesSearch(Dir, Edit1.Text);

    end;



    end.



  • Profile
    박혜윤 2000.12.16 22:05


    함수는 감사하게 자알 받았습니다.



    그런데, 폴더를 숨김으로 하면, 그건 폴더만 나오구 검색이 안되네요?



    숨김속성을 가진 폴더는 그냥 폴더만 나와서,



    if ((Sr.Attr and faDirectory + fahidden) = faDirectory) 라고 해봤는데...

    따식이 말을 안듣네요... 따식....



    도와주시는 김에.. 한번만.. ^^;



    하드에 폴더를 하나 숨김으로 만들어서, 그 안에 보통 속성으로 저장을 하면,

    디렉토리가 있다고는 나오는데, 그 디렉토리에의 파일은 검색이 안되는 문제가...



    한번만 더 ^^;



    감사. 감사.

  • Profile
    박혜윤 2000.12.16 21:42
    창민님... 정말 감사합니다. 정말루 정말루... 캄사 감사 가무사 합니다.

    역씨 델파이가 최고군요... 고수님도 많이 계시고, 친절한분도 많이 계시구...



    앞으로 종종 여쭈어 보겠습니다.



    거듭감사드립니다.

    • 유도삼
      2000.12.17 07:45
      Datapump를 사용하세요. 델파이 프로그램 그룹에 있습니다. 사용법은 원본 데이타를 선택하고 옮겨줄 데...
    • 김진선
      2000.12.22 03:28
      datapump를 사용해보았는데 안되더군요. sql에서 import시킬려고 그러는데 역시 잘 안되네요. 지정하지 ...
    • 유도삼
      2000.12.17 07:58
      프로그램에서 자동으로 엑셀 파일을 읽어서 디비로 전환을 하나요? 아니면 단지 필요에 의해 이번 한번만 ...
    • 명지니
    • 2000.12.17 00:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • +^-_-^+
      2000.12.21 02:43
      흠...ODBC로는 해보지 않았지만....메셋을 보고 걍...^^'' MySQL 에서 접속 아이디가 원격접속을 허용...
    • 작성
      2000.12.16 22:19
      제 개인적인 의견으로 예기한다면 ADO와 델파이 궁합이 안맞는다고 생각합니다. 그렇다고 DAO가 좋다는 ...
    • 대원이
    • 2000.12.16 20:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 반칙왕
      2000.12.18 20:11
      대원이 wrote: > 오라클을 설치하고 NET EASY CONFIG 로 서버와 연결 설정을 합니다. > > 그런데 이 작...
    • 반칙왕
      2000.12.18 20:11
      대원이 wrote: > 오라클을 설치하고 NET EASY CONFIG 로 서버와 연결 설정을 합니다. > > 그런데 이 작...
    • 김재억
      2000.12.16 21:01
      프로그래밍으로든, 시험용으로든 한번도 해본적은 없지만 암튼 이러이러 하면 된다는 이야기를 들은 적이 ...
    • 버니
    • 2000.12.16 20:03
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박일용
      2000.12.16 20:07
      버니 wrote: > 지금 첨으로 델파이를 시작하려고 합니다. > 그래서 책에 있는 예제를 보고 하는데 > 툴...
    • 버니
      2000.12.16 20:42
      정말 감사합니다. 그걸 몰라서 하루 종일 진도가 안 나갔거든요 죄송한데 한개만 더 물어봐도 될런지 제...
    • 박일용
      2000.12.18 19:05
      버니 wrote: > 정말 감사합니다. > 그걸 몰라서 하루 종일 진도가 안 나갔거든요 > 죄송한데 한개만 더 ...
    • 사발우성
      2000.12.16 21:14
      아래의 예를 보심 알겠죠...^^;; 이렇게 하면 됨당.... 구람 즐프하시길...^^;; while not eof do...
    • 초보
    • 2000.12.16 19:33
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 궁금이
    • 2000.12.16 19:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바다사랑
      2000.12.16 20:22
      궁금이 wrote: > error copying file unknown error > eror code : -1 > source file : *.cnf > destin...
    • 이박사
    • 2000.12.16 19:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 머리나쁜얀
      2000.12.16 19:53
      첫장 10장 찍구 둘째장 10장 찍으면 되지 않나여 이박사 wrote: > > 퀵리포트 출력을 할려구 그러...
    • 초보
    • 2000.12.16 19:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이성훈
      2000.12.18 19:54
      초보 wrote: > 안녕하세요... > ms-sql에 동적으로 table를 생성시키는 방법좀.... 가능한건지도.... >...
    • 박혜윤
    • 2000.12.16 18:52
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.12.16 19:41
      안녕하세요~ 구창민입니다. 고수는 아니구요 ^_^; 윈도그즈처럼 파일찾기를 하는 함수를 한번 구현해...
    • 박혜윤
      2000.12.16 22:05
      함수는 감사하게 자알 받았습니다. 그런데, 폴더를 숨김으로 하면, 그건 폴더만 나오구 검색이 안되...
    • 박혜윤
      2000.12.16 21:42
      창민님... 정말 감사합니다. 정말루 정말루... 캄사 감사 가무사 합니다. 역씨 델파이가 최고군요... 고수...
    • 델피언
    • 2000.12.16 18:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • cyberia
      2000.12.16 19:28
      저도 잘 몰라서 정확한 답을 드리기는 어렵지만, 일단 쉽게 생각하면 콤포넌트 올려놓고 코딩하든, 동적 ...
    • 박혜윤
      2000.12.16 19:14
      저도 잘은 모르지만... 두달동안 고생한 어설픈 답변은... 동적생성을하면, 다이나믹한.... 이라고 하...
    • 전수완
      2000.12.16 18:56
      제가 생각하기에는 용량같은 거 때문인거 같은데요. 동적생성하면 생성되고 사라지기 땜시 그럴꺼 같은데...
    • 박혜윤
      2000.12.16 18:59
      그 질문에 대한 답변은 게시판을 한번만 검색을 해 보셨으면... 되는데... 고수님들께서 바쁘실것 ...
    • 델피언
      2000.12.16 20:58
      감사합니다. 그런데.... 특정 디렉토리에 특정파일의 아이콘을 가져오는게 아니구요.. 만약 시스템에 ht...
    • paradox
    • 2000.12.16 18:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 방경주
      2000.12.16 18:34
      흠...에러 날만한 곳이 별루 없는거 같은데...ㅡㅡ; 혹시 sum(cont) cont 인데 띄어 쓰기를 안하신 것은...