안녕하세여... ^^
파일에 관한 여러 자료를 찾아보았는데... 파일의 갯수를 세는 것은 없더라구요...
파일의 크기나 생성날짜에 대한 정보를 아는 예제는 많은데...!_!
어느 한 디렉토리에 몇개의 파일이 있는지...
셀수 있는 방법은 없나요?
제가 하고자 하는게...
특정 디렉토리에 있는 파일을 송신하고, 또 다른 디렉토리에서는 다른 사람이 송신한 파일을 받아 두고... 뭐 이런걸 만들려구 하거든여...
그래서... 지금까지 송신한 파일()개, 수신한 파일()개, 수신된 파일()개...
이런 정보를 나타내고자 하는데... 어떻게 해야 할지...
도와주세요... !_!
오늘 날씨가 너무 좋네여... !_!
오늘 무지 추울거라구 해서 두터운 외투 챙겨서 나왔는뎅...=_=
낼두 따뜻했음 좋겠네엽...^^
올만에... 수능 보는 날이 따뜻하면... ^^ 참 좋을것 같네여...
그럼... 모두들 감기 조심하시궁...^^
행복하세요~~~~~~~~~~~~~~~~~~~~~~~~~~*
> 안녕하세여... ^^
> 파일에 관한 여러 자료를 찾아보았는데... 파일의 갯수를 세는 것은 없더라구요...
> 파일의 크기나 생성날짜에 대한 정보를 아는 예제는 많은데...!_!
>
> 어느 한 디렉토리에 몇개의 파일이 있는지...
> 셀수 있는 방법은 없나요?
>
> 제가 하고자 하는게...
> 특정 디렉토리에 있는 파일을 송신하고, 또 다른 디렉토리에서는 다른 사람이 송신한 파일을 받아 두고... 뭐 이런걸 만들려구 하거든여...
>
> 그래서... 지금까지 송신한 파일()개, 수신한 파일()개, 수신된 파일()개...
> 이런 정보를 나타내고자 하는데... 어떻게 해야 할지...
> 도와주세요... !_!
>
> 오늘 날씨가 너무 좋네여... !_!
> 오늘 무지 추울거라구 해서 두터운 외투 챙겨서 나왔는뎅...=_=
> 낼두 따뜻했음 좋겠네엽...^^
> 올만에... 수능 보는 날이 따뜻하면... ^^ 참 좋을것 같네여...
>
> 그럼... 모두들 감기 조심하시궁...^^
> 행복하세요~~~~~~~~~~~~~~~~~~~~~~~~~~*
음..제가 만든건요
다음과 같은 조건에서의 코딩입니다. 도움이 되었으면 하는군요...
사용컴포넌트 : NMFTP 과 WIN 3.1에 있는 FILELISTBOX , DIRECTORYLISTBOX , DRIVECOMBOBOX , FILTERCOMBOBOX 입니다
procedure Tfrm_0314.NMFTP1PacketRecvd(Sender: TObject);
begin
frm_file.ProgressBar_one.Max := NMFTP1.BytesTotal ;
// frm_file는 파일진행을 보여주는 새로운 폼입니다
frm_file.ProgressBar_one.Step := frm_file.ProgressBar_one.Max div 1024 ;
frm_file.ProgressBar_one.Position := NMFTP1.BytesRecvd ;
frm_file.ProgressBar_total.Max := down_list.Count ;
// down_list.Count에는 다운로드받을 파일의 갯수입니다
frm_file.ProgressBar_total.Step := frm_file.ProgressBar_total.Max div 10 ;
frm_file.ProgressBar_total.Position := down_count ;
frm_file.lbl_file_name_file.Caption := down_list.Strings[down_count] ;
// down_list.Strings[down_count]에는 현재 다운로드받고 있는 파일명입니다
frm_file.lbl_file_count_file.Caption := IntToStr( down_count ) + '/' + IntToStr( down_list.Count ) ;
// IntToStr( down_count )+'/'+IntToStr( down_list.Count ) => 현재/전체갯수
end;
procedure Tfrm_0314.NMFTP1PacketSent(Sender: TObject);
begin
frm_file.ProgressBar_one.Max := NMFTP1.BytesTotal ;
frm_file.ProgressBar_one.Step := frm_file.ProgressBar_one.Max div 1024 ;
frm_file.ProgressBar_one.Position := NMFTP1.BytesSent ;
frm_file.ProgressBar_total.Max := up_list.Count ;
frm_file.ProgressBar_total.Step := frm_file.ProgressBar_total.Max div 10 ;
frm_file.ProgressBar_total.Position := up_count ;
frm_file.lbl_file_name_file.Caption := up_list_server.Strings[up_count] ;
frm_file.lbl_file_count_file.Caption := IntToStr( up_count ) + '/' + IntToStr( up_list.Count ) ;
end;
procedure Tfrm_0314.sbtn_upClick(Sender: TObject);
// 파일을 업로드하는 버튼을 클릭했을 때
var
i , i_pos : Integer ;
i_length : Integer ;
im : String ;
begin
IF fil_p3.SelCount = 0 then
begin
application.MessageBox ( '먼저 파일을 선택하십시요 ',
'알림',
MB_OK) ;
EXIT ;
end ;
if (sender as Tspeedbutton).Name = 'sbtn_up' then
begin
IF application.MessageBox ( '서버로 파일을 복사하시겠습니까? ',
'알림',
MB_OKCANCEL + MB_ICONINFORMATION
+ MB_DEFBUTTON2) = IDCANCEL THEN
EXIT ;
end
else if (sender as Tspeedbutton).Name = 'sbtn_move' then
begin
IF application.MessageBox ( '서버로 파일을 이동시키시겠습니까? ',
'알림',
MB_OKCANCEL + MB_ICONINFORMATION
+ MB_DEFBUTTON2) = IDCANCEL THEN
EXIT ;
end ;
SET_SBTN ( FALSE ) ;
// 다른 기능을 하는 버튼들을 모두 ENABLED := FALSE 시킨다
up_list := TStringlist.Create ;
up_list_server := TStringlist.Create ;
up_count := 0 ; i := 0 ; i_pos := 0 ;
for i := 0 to fil_p3.items.count - 1 do
begin
if fil_p3.Selected[i] then
begin
if copy( fil_p3.Directory ,
length(fil_p3.Directory),
1) = '' then
begin
up_list.Add(fil_p3.Directory + fil_p3.Items.strings[i] ) ;
end
else
begin
up_list.Add(fil_p3.Directory+''+fil_p3.Items.strings[i] ) ;
end ;
fil_p3.Selected[i] := false ;
end ;
end ;
// 올릴 파일명을 리스트에 저장하기
up_list_server.Assign(up_list) ;
frm_file := Tfrm_file.Create(Application); ;
frm_file.Show ;
for up_count := 0 to up_list.Count - 1 do
begin
im := up_list.strings[up_count] ;
i_pos := pos('',im ) ;
while i_pos <> 0 Do
begin
Delete(im ,1 ,i_pos) ;
i_pos := pos('',im) ;
end ;
if (sender as Tspeedbutton).Name = 'sbtn_up' then
begin
try
NMFTP1.Upload(up_list_server.strings[up_count],im) ;
except
on E:EXCEPTION do
application.Messagebox ( ' 업로드에 실패하였습니다 ' + chr(13) + chr(13) +
' refresh 하시고 다시 시도하십시요 ' , ' 알림 ' , MB_OK ) ;
end ;
end
else if (sender as Tspeedbutton).Name = 'sbtn_move' then
begin
try
NMFTP1.Upload(up_list_server.strings[up_count],im) ;
windows.DeleteFile(PChar(up_list_server.strings[up_count])) ;
except
on E:EXCEPTION do
application.MessageBox ( ' 서버로의 파일이동이 실패했습니다 ' + chr(13) + chr(13) +
' refresh 하시고 다시 시도하십시요 ' , ' 알림 ' , MB_OK ) ;
end ;
end ;
end ;
SET_REFRESH ;
if (sender as TSpeedButton).Name = 'sbtn_move' then
fil_p3.Update ;
up_list.Free ;
frm_file.Release ;
SET_SBTN ( TRUE ) ;
end;
procedure Tfrm_0314.sbtn_dnClick(Sender: TObject);
// 파일을 다운로드하는 버튼을 클릭할 때
var
i : integer ;
begin
fil_p3.Directory+lbo_server.Items.strings[lbo_server.itemindex]) ;
if lbo_server.Items.Count = 0 then
begin
Application.MessageBox ( ' 다운로드할 파일이 없습니다 ' , '알림',
MB_OK + MB_ICONINFORMATION ) ;
EXIT ;
end ;
if (lbo_server.SelCount = 0 ) then
begin
Application.MessageBox ( ' 다운로드할 파일을 선택하십시요 ' , '알림',
MB_OK + MB_ICONINFORMATION ) ;
EXIT ;
end ;
IF Application.MessageBox ( ' 서버에서 내컴퓨터로 파일을 복사하시겠습니까? ' , '알림',
MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2) = IDCANCEL THEN
EXIT ;
SET_SBTN ( FALSE ) ;
down_list := TStringlist.Create ;
NMFTP1.Mode(MODE_IMAGE);
for i := 0 to lbo_server.Items.Count - 1 do
begin
if lbo_server.Selected[i] then
begin
down_list.Add(lbo_server.Items.Strings[i] ) ;
lbo_server.Selected[i] := False ;
end ;
end ;
frm_file := Tfrm_file.Create(Application); ;
frm_file.Show ;
for down_count := 0 to down_list.count - 1 do
begin
if Copy(fil_p3.Directory,length(fil_p3.Directory),1) = '' then
begin
NMFTP1.Download(down_list.Strings[down_count],
fil_p3.Directory + down_list.Strings[down_count]) ;
end
else
begin
Try
NMFTP1.Download(down_list.Strings[down_count],
fil_p3.Directory + '' + down_list.Strings[down_count]) ;
Except
On E:EXCEPTION do
Application.Messagebox ( ' 다운로드에 실패했습니다 ' + chr(13) + chr(13) +
' refresh 하십시요 ', ' 알림 ' , MB_OK ) ;
End ;
end ;
end ;
SET_REFRESH ;
fil_p3.Update ;
down_list.Free ;
frm_file.Release ;
SET_SBTN ( TRUE ) ;
end;
도움 되시길 바랍니다