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.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: > 윈도우즈에서 특정 프로그램이 실행 되는지 알아 보려면 어떻게 > 해야 하나요... > 프...
    • 강지영
    • 1999.05.09 05:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.10 08:47
      음냐...저의 생각으로서는 쿼리를 이용해 한방에 여러테이블에 자료를 업데이트 시키는 적이 무리가 있을...
    • 이정욱
      1999.05.08 21:32
      네... 김영대님의 홈에서 건져왔습니다. unit Unit1; interface uses Windows, Messages, SysUt...
    • 윤광윤
    • 1999.05.08 09:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.08 15:58
      제일 좋은 방법은 필요시에 생성하는 동적 생성을 이용하세요. 미리 컴포넌트를 폼위에 놓으면 그 컴포넌...
    • 강대근
    • 1999.05.08 05:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.09 05:17
      강대근 wrote: > 델파이로된 프로그램을 세개의 프로젝트로 나누어 만든후 메인이 되는폼만 Exe로 > 생...
    • 안치봉
      1999.05.11 23:07
      안녕하세요. 메일은 잘 받았습니다. 그런데 분석을 해보았는데 잘은 모르겠습니다. 메일로 보내들리려고 ...
    • 안태규
    • 1999.05.08 03:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 남호열
      1999.05.08 06:02
      안태규 wrote: > 년월일의 데이타를 년에 상관없이 월일사이의 일자를 sql에서 선택하려면 > 어떻게 해야...
    • 이호선
    • 1999.05.08 01:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.10 10:43
      참고로 Encrypt를 하는 컴포넌트(유닛)을 한델(http://www.delphi.co.kr)에 올려놓겠습니다. 이호선 wro...
    • 구창민
      1999.05.08 07:48
      이호선 wrote: > 안녕하세요. > 스트링데이타를 Encrypt할려하는데 좋은방법이 없을까요. > 의사코...
    • 이호선
    • 1999.05.08 01:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.08 07:44
      이호선 wrote: > 안녕하세요. > 타이틀바의 시스템메뉴(최대, 최소)의 기능을하는 델파이 함수나 api가 ...
    • 북해
    • 1999.05.08 01:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.08 22:03
      먼저 Project메뉴에 Options를 선택해 보세요. 그러면 Packages라는 탭이 보입니다. 그 탭을 클릭하신 후 ...
    • 북해
    • 1999.05.08 01:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.08 21:37
      데이타베이스 파일들을 다른 디렉토리나 플로피에 저장을 해두면 되지 않을까요? 음.. 조금 더 신경을 쓴다...
    • 이현정
    • 1999.05.08 01:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.08 02:25
      제 경험에 따르면... Windows 국가별 설정의 날짜항목을 점검해보세요. 아마 mm-dd-yy로 되있을겁니다.
    • 영이...
    • 1999.05.08 00:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.08 04:44
      영이... wrote: > 아시는분 부탁합니다. > 1) DBGrid의 Columns란에... > '이름 주소 과목 성적 ...
    • 남호열
    • 1999.05.08 00:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.08 04:37
      남호열 wrote: > 안녕하세요? 지금 회사에서 프로그램 개발중입니다. > 근데 조회하는 폼을 만드는데 여...
    • 안치봉
      1999.05.09 05:13
      최덕환 wrote: > 안녕하세요.. 그동안 델파이로 프로그램을 짜면서 대체 > create()에서 안에 들어가는...
    • 그냥
      1999.07.06 20:37
      안치봉 께서 말씀하시기를... > 최덕환 wrote: > > 안녕하세요.. 그동안 델파이로 프로그램을 짜면서 대...