Q&A

  • 파일복사관련 질문입니다.
파일 복사하는 소스를 찾아서 적용했는데요...



복사할 폴더와 복사될 폴더를 입력한 후 버튼을 누르면  해당 폴더에 파일은 복사가 잘 됩니다.

그 다음에 복사한 파일만 리스트 박스에 저장해서 보여주고 싶은데..

이부분에서 문제가 생깁니다.

만약 해당 폴더가 없다면 생성 후 잘 저장되고 리스트 박스에도 잘 올라갑니다.

그런데 기존에 폴더가 있을때 추가를 하면 리스트박스에 이상하게 저장이 됩니다.

예를 들면

제가 C:\work\2009\3월 안에 있는 a.doc, b.doc 라는 파일을

D:\파일관련 폴더에  저장하고 싶습니다.

D:\파일관련 안에  폴더가 없을경우에는 잘 저장이 되고 ( a.doc 랑 b.doc 파일이 ) ListBox1에 잘 올라가는데요..

ListBox1
D:\파일관련\a.doc
D:\파일관련\b.doc

그런데 D:\파일관련안에 P, Q, R 이라는 폴더가 있을경우
(D:\파일관련\P\ 안에 파일들이 있고.. Q, R도 마찬가지구요..)

마지막 폴더 즉, R의 폴더 와 R 폴더 안에 있는 파일들이 listBox1에 저장이 됩니다..
(a.doc랑 b.doc는 D:\파일관련 안에 잘 저장이 되구요... )

R에 1.txt, 2.txt 가 있다고 가정하면

ListBox1에는

D:\파일관련\R\1.txt
D:\파일관련\R\2.txt
D:\파일관련\R

이렇게요..;;

왜 그런지 모르겠습니다...

꼭 답변 부탁드립니다. ㅠㅠ


아래 해당 부분 소스만 첨부했어요..;;




procedure TForm1.Button3Click(Sender: TObject);
   ...
   copyFiles(memo2.text, mPath);
  //  memo2.text : 복사할 폴더   mPath := 복사될 폴더 입니다
   ...
end;



procedure TForm1.CopyFiles(FromDir, ToDir : string);

var

FOS :tSHFileOpStruct;

begin

   FromDir := Trim(FromDir);



   if FromDir[Length(FromDir)] <> '\' then

       FromDir := FromDir + '\';



   ToDir := Trim(ToDir);

   with FOS do

   begin

      Wnd := 0;

      wFunc := FO_COPY;

      pFrom := PChar(FromDir + '*.*' + #0);

      pTo := PChar(ToDir + #0);

      fFlags := FOF_ALLOWUNDO or FOF_MULTIDESTFILES or FOF_NOCONFIRMMKDIR;

   end;





   if SHFileOperation(FOS) = 0 then

   begin

      ShellExecute(0, pchar('open'), pchar('explorer.exe'), pchar(ToDir), nil, SW_SHOW);

      findfiles(ToDir);

   end;



end;





function TForm1.FindFiles(FolderName: string): Integer;

var

   Sr: TSearchRec;

   str: string;

begin

   listBox1.Items.Clear;



   if (findFirst(FolderName + '\*.*', faAnyFile, Sr)) = 0 then

   begin

       while FindNext(Sr) = 0 do begin

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

         begin

            if (Sr.Attr and faDirectory) = faDirectory then

               FindFiles(FolderName + '\' + Sr.Name);



            ListBox1.Items.Add(FolderName + '\' + Sr.Name);

          end;

       end;

       cfRe := 1;

   end      

   else

     cfRe := -1;



   FindClose(Sr);



end;

1  COMMENTS
  • Profile
    최용일 2010.01.06 23:02
    코드를 이해하시고 짜신것은 아닌듯하군요...

    아래 부분이 잘못
    • 후초보
    • 2010.01.07 01:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김준형
      2010.06.12 00:31
      아마 한글설정하는 부분에서 Microsoft IME 2007이상으로 설정되어 있는것 같은데.. 제어판->국가 및...
    • 매중원
    • 2010.01.06 22:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.01.06 23:02
      코드를 이해하시고 짜신것은 아닌듯하군요... 아래 부분이 잘못
    • 한윤식
    • 2010.01.06 22:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2010.01.07 01:35
      폰트 크기 줄이지 않는 이상 안됩니다. 퀵레포트의 비애죠 ㅠ.ㅠ
    • 최용일
      2010.01.06 23:10
      이런경우는 OnMouseDown이나 OnMouseUp에서 처리하시면 됩니다. 이벤트의 파라매터중에서 Button을 보시...
    • 이종원
      2010.01.06 23:45
      답변 감사드립니다. ^^ 확인해보겠습니다 ^^
    • 스바쉬
    • 2010.01.06 20:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2010.01.07 01:37
      BDE 쓰시나요 ADO 쓰시나요? 아 하긴 델4면 BDE 일거 같은데.., 아주 간단 INSERT 쿼리부터 테스트...
    • 희아빠
    • 2010.01.06 19:19
    • 0 COMMENTS
    • /
    • 0 LIKES
    • HyunjSohn
    • 2010.01.06 10:05
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.01.06 23:17
      자료실에 있는 델6지원하는 2.75버전을 설치해보세요.
    • HyunjSohn
      2010.01.08 08:36
      감사합니다만, 제가 보안때문에 외부파일을 가지고 들어가지 못하는 상황인데 지금 가지고 있는 RxLib를 ...
    • 최용일
      2010.01.08 08:47
      require절에있는 것들 다 지우고 다시 컴파일해보세요. 아마도 필요한 패키지 추가할 것인가 물어볼것입...
    • HyunjSohn
      2010.01.12 07:36
      감사합니다^^ path 추가로 해결이 됐습니다.
    • 이규하
      2010.01.27 18:05
      http://jvcl.delphi-jedi.org/ 에 최신의 Rxlib 를 계승한 Jedi Visual Component Library 가 있습니...
    • phono
      2010.01.07 02:10
      batch 처리 statement가 있다고는 얼핏 들은거 같은데.., 200만건 이면은 후덜덜한 양이네요.. ^^
    • phono
      2010.01.08 19:14
      "현재는 sqlldr 로더를 이용해서 10분미만으로 작업을 끝내고 있다고 합니다만, 이것이 로더를 사용...
    • 구창민
      2010.01.08 19:49
      아.. 네 그런 조치는 이미 해두었다고 하네요.. 현재는 그냥 로더를 이용해 처리한답니다...그시간...
    • phono
      2010.01.08 22:38
      이렇게 해도 될런지 모르겠지만.. 저같은 경우 인서트 껀수가 많은거 같은 경우 가끔 트랜젝션 ...
    • 이강석
    • 2010.01.06 01:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2010.01.06 01:55
      <!--CodeS--> procedure TfMain.VMRTextOut(AText: string); var VMRBitmap: TVMRBit...
    • 이강석
      2010.01.06 02:29
      쩌업...TVideoWindow 프로퍼티 Mode를 vmVMR로 주니까 나오네요?? ^^
    • 이용벽
    • 2010.01.04 19:35
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 아이에스
      2010.01.04 19:46
      Memo1.Lines[0] + Memo1.Lines[1];
    • 이용벽
      2010.01.04 20:14
      2개만이 아니라 연속으로 출력하려고 하는데요
    • 오름
      2010.01.04 20:45
      Memo1.Lines.Add('A'); Memo1.Lines.Add('B'); Memo1.Lines.Delimiter:=chr(28); ShowMEssage(Memo1.L...
    • 이용벽
      2010.01.04 22:52
      콤파일 시 이런 메시지가 나옵니다. 제가 뭔가 사용을 잘못한것인지... Undeclared identifier: 'Delimi...
    • 장성호
      2010.01.04 22:59
      다음과 같이 하면 line을 바꾸지 않고 계속 Memo에 추가됩니다. Memo1.Text:=Memo1.Text+'A';...
    • 이용벽
      2010.01.05 00:05
      감사합니다. 그런 방법이 있었군요. 한가지 더. 정지시킬 때까지 무한 루프일 경우는 어떻게 될까요. M...
    • 소울해커
      2010.01.05 08:12
      변수 하나 두시고 취소 버튼만드셔서 컨트롤하셔요. 루프중에 프로그램이 응답없음이 되지 않도록 ...
    • • • •
    • 최용일
      2010.01.04 23:19
      TList로 바꾸시는것이 좋을듯하네요. 안의 데이터가 WIN32_FIND_DATA라고 생각하시고 포팅하시면 될것같...
    • 소울해커
      2010.01.05 08:15
      답변 감사합니다. 헌데... 개발 방향이 수정되어서 고심한 의미가 사라질거 같습니다. ㅠ_ㅠ;
    • 김수현
    • 2010.01.02 06:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2010.01.04 00:35
      <!--CodeS--> var pUserName: array[0..80] of Char; wLength: LongWord; begin wLengt...
    • 신동열
    • 2010.01.01 03:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권익수
      2010.01.02 04:38
      Connections 메뉴의 Show Host Name 옵션이 체크되어있지않나 확인해보세요. Show Host Name 옵션이 체...
    • 최용일
      2009.12.31 12:37
      pipe
    • 이용벽
    • 2009.12.31 02:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2009.12.31 12:45
      최대 count만큼 RS232C를 통해서 데이터를 읽고, 데이터중 화면상에 뿌릴 수 없는 아스키코드는 16진수로...
    • 이용벽
      2009.12.31 19:44
      질문 하나 더. 잘 동작하던 프로그램이 가끔 이상 동작을 해서 고생하고 있습니다. 위 문장을 보시면 ...
    • 박선우
    • 2009.12.30 20:40
    • 0 COMMENTS
    • /
    • 0 LIKES