Q&A

  • 파일 리스트 창을 두개사용시 문제..
창이 두개 있는 화일 매니저같은(?)것을 만들어 보려고 합니다...

여기서 각각의 화일 리스트박스에서의 [DEL]키 처리는 별 문제

가 없지만... 양쪽의 화일창중 한쪽의 화일 리스트에서 화일을

몇개 선택한후(여를 들어 오른쪽, FileListBox2) 가운데 있는

삭제버튼을 눌렀을때... 조금전에 선택된 오른쪽 화일이

지워지게 하고 싶은데... 어떻게 하면 되나요...

물론 왼쪽의 화일도 이런 저런 이유로 몇가지 화일이 선택

되어 있다고 가정을 합니다. 이런경우 왼쪽의 화일이 지워지면 않되겠죠...^^



그리고 또한가지...

파일의 디렉토리를 서브 디렉토리까지 지우려고 하는데...

잘않되는군요... 재귀호출방식으로... 좀 가르쳐 주세요....^^;



전 초보입니다.

2  COMMENTS
  • Profile
    글쎄요. 1999.05.10 23:24
    DeleteFiles함수입니다. 세번째 인자가 True이면 서브디렉토리까지

    지워주고 아니면 현 디렉토리만 지웁니다.

    두번 째 인자가 '*.*'이면 모든파일을 지워요.

    그럼 좋은 하루 되셔요.

    {**Summary ======================================================

    NAME : DeleteFiles

    PARAMS : const Path, Mask : string; recursive : boolean



    RETURNS : -

    PURPOSE : delete several files with joker.

    Optional recursive = search in subdirectories.



    EXAMPLE : DeleteFiles ('c:temp', '*.txt', True);

    UPDATES :



    NOTES :

    CODED : PT 15.10.96

    ===============================================================*}

    procedure DeleteFiles (const Path, Mask : string; recursive : boolean);

    var

    Result : integer;

    SearchRec : TSearchRec;

    begin

    Result := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);

    while Result = 0 do

    begin

    if not DeleteFile (Path + SearchRec.Name) then

    begin

    FileSetAttr (Path + SearchRec.Name, 0); { reset all flags }

    DeleteFile (Path + SearchRec.Name);

    end;

    Result := FindNext(SearchRec);

    end;

    FindClose(SearchRec);



    if not recursive then

    exit;



    Result := FindFirst(Path + '*.*', faDirectory, SearchRec);

    while Result = 0 do

    begin

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

    begin

    FileSetAttr (Path + SearchRec.Name, faDirectory);

    DeleteFiles (Path + SearchRec.Name + '', Mask, TRUE);

    RmDir (Path + SearchRec.Name);

    end;

    Result := FindNext(SearchRec);

    end;

    FindClose(SearchRec);

    end;



  • Profile
    안치봉 1999.05.10 21:36
    김봉재 wrote:

    > 창이 두개 있는 화일 매니저같은(?)것을 만들어 보려고 합니다...

    > 여기서 각각의 화일 리스트박스에서의 [DEL]키 처리는 별 문제

    > 가 없지만... 양쪽의 화일창중 한쪽의 화일 리스트에서 화일을

    > 몇개 선택한후(여를 들어 오른쪽, FileListBox2) 가운데 있는

    > 삭제버튼을 눌렀을때... 조금전에 선택된 오른쪽 화일이

    > 지워지게 하고 싶은데... 어떻게 하면 되나요...

    > 물론 왼쪽의 화일도 이런 저런 이유로 몇가지 화일이 선택

    > 되어 있다고 가정을 합니다. 이런경우 왼쪽의 화일이 지워지면 않되겠죠...^^

    >

    > 그리고 또한가지...

    > 파일의 디렉토리를 서브 디렉토리까지 지우려고 하는데...

    > 잘않되는군요... 재귀호출방식으로... 좀 가르쳐 주세요....^^;

    >

    > 전 초보입니다.



    안녕하세요.



    FileListBox에서는 Update메소드가 먹히질 않습니다.

    가장 간단한 방법은 상위디렉토리로 욺직였다가 다시 자신의 디렉토리로 들어오는것입니다. 이때 FileListBox.Items.BeginUpdate와 EndUpdate를 사용하시면 상위디렉토리로 갔을 때 파일들이 보이지않기때문에 효과가 괜찬을것입니다.





    재귀호출소스....예제..일정폴더의 하위폴더의 dll 을 다른 폴더로 복사.--;;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    Start('D:S');

    end;



    procedure TForm1.Start(path: string);

    var

    sr: TSearchRec;

    r: integer;

    begin

    Caption := path;



    ChDir(path);



    r := FindFirst('*.*', faAnyFile, sr);



    while r = 0 do

    begin

    if (sr.Attr and faDirectory) >= 1 then

    begin

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

    Start(sr.Name);

    end

    else

    begin

    if (ExtractFileExt(sr.Name) = '.dll') or (ExtractFileExt(sr.Name) = '.DLL') then

    begin

    Label1.Caption := path + '' + sr.Name;

    Application.ProcessMessages;

    CopyFile(PChar(sr.Name), PChar('c:tempdll' + sr.Name), true);

    end;

    end;

    r := FindNext(sr);

    end;



    FindClose(sr);

    ChDir('..');

    end;





    • 송수정
    • 1999.05.11 10:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 11:01
      한델(http://www.delphi.co.kr) 강의실에 가보시면 인쇄에 관한 강좌가 있습니다. 참고하시구요.. TPrint...
    • 엠마
    • 1999.05.11 09:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.11 18:02
      엠마 wrote: > 테이블에 insert한후에 조회하면은 insert한 자료는 조회가 되지 않습니다. > 테이블에 데...
    • 강경중
    • 1999.05.11 07:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.11 08:09
      강경중 wrote: > 델파이의 폼에 콤포넌트를 추가하면 > 콤포넌트 마다 고유의 Taborder가 있습니다. > ...
    • 강경중
      1999.05.12 03:13
      안치봉 wrote: > 강경중 wrote: > > 델파이의 폼에 콤포넌트를 추가하면 > > 콤포넌트 마다 고유의 Tabo...
    • 강경중
    • 1999.05.11 06:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 10:08
      에러를 가로챈다기 보다 무시하게 하면 됩니다. Try Except문으로 처리하세요. 델파이환경에서 Break on ...
    • 강경중
    • 1999.05.11 06:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 11:03
      ImageList의 속성(Property)를 보시면 그림의 크기를 정하는곳이 있습니다. Width와 Height이죠. 그림은 ...
    • 누군지
      1999.05.11 10:12
      이런 종류의 질문이....??? 스스로 노력을 하다가 문제가 생겼을 때 질문을 해야하는것이 적어도 성의가...
    • 영이...
    • 1999.05.11 03:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:32
      안녕하세요? 제가 DB는 모르지만 언어적으로 해결을 하시려면... 하나씩 기억했다가 사용하면 어떨까요? ...
    • 왕초보
    • 1999.05.11 02:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:38
      CM_EXIT 라는 컴포넌트 내부 메세지를 가로채면 됩니다. procedure CMExit(var Message: TCMExit); mess...
    • 왕초보
      1999.05.11 21:54
      친절한 답변 감사드립니다... 이정욱 wrote: > CM_EXIT 라는 컴포넌트 내부 메세지를 가로채면 됩니다....
    • 이호선
    • 1999.05.11 01:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:50
      BitBtn1.Glyph.LoadFromFile의 메소드가 잘 먹히는데요? 아래는 테스트 해본 코드입니다... var ...
    • 왕초보
      1999.05.11 02:54
      Tfield의 EditMask에다가 #라고 쓰십시오...이게 무슨 뜻인지..? "#"으로만 editmask를 잡으면 1,234 와 ...
    • 하윤철
      1999.05.11 17:29
      죄송합니다... TField에 EditFormat과 DisplayFormat 속성이 있을겁니다. DisplayFormat은 보여주는 ...
    • 김장섭
    • 1999.05.10 20:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 글쎄요.
      1999.05.10 23:16
      영문으로 되 있는 데 참고하시는 데 그리 어려움이 없을 겁니다. 그럼 좋은 하루 되셔요. ////////// TI...
    • 김영대
      1999.05.10 22:27
      김장섭 wrote: > 콤보 박스의 Item에 텍스트가 아닌 텍스트와 이미지가 들어가는 > 컴포넌트를 구합니다...
    • 땡글이
    • 1999.05.10 20:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.10 21:37
      treeview의 Q&A를 한델(http:/www.delphi.co.kr)자료실에 올려 놓겠습니다. 참고 하세요... 땡글이 wro...
    • 김봉재
    • 1999.05.10 19:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 글쎄요.
      1999.05.10 23:24
      DeleteFiles함수입니다. 세번째 인자가 True이면 서브디렉토리까지 지워주고 아니면 현 디렉토리만 지웁니...
    • 안치봉
      1999.05.10 21:36
      김봉재 wrote: > 창이 두개 있는 화일 매니저같은(?)것을 만들어 보려고 합니다... > 여기서 각각의 화일...
    • 북해
    • 1999.05.10 18:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.10 19:37
      모 전적으로 맞는것은 아니지만 제 생각을 말씀드리죠. 일단, 비베는 MS 에서 나온 개발툴이죠. 우리가 생...
    • 이정욱
      1999.05.10 10:41
      패스워드 같은것을 저장하시려면 Encrypt 컴포넌트를 사용하시면 됩니다. 물론 저장은 텍스트형식으로 그...
    • 안명호
    • 1999.05.09 22:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.10 00:15
      안명호 wrote: > MS 의 SPY++ 이나 Borland 의 WinSight32 같이 > 다른 프로그램에서 발생하는 메시지...
    • 안명호
    • 1999.05.09 21:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.10 00:15
      안명호 wrote: > 윈도우즈에서 특정 프로그램이 실행 되는지 알아 보려면 어떻게 > 해야 하나요... > 프...