Q&A

  • 파일의 갯수를 세는 방법을 찾습니당...
안녕하세여... ^^

파일에 관한 여러 자료를 찾아보았는데... 파일의 갯수를 세는 것은 없더라구요...

파일의 크기나 생성날짜에 대한 정보를 아는 예제는 많은데...!_!



어느 한 디렉토리에 몇개의 파일이 있는지...

셀수 있는 방법은 없나요?



제가 하고자 하는게...

특정 디렉토리에 있는 파일을 송신하고, 또 다른 디렉토리에서는 다른 사람이 송신한 파일을 받아 두고... 뭐 이런걸 만들려구 하거든여...



그래서... 지금까지 송신한 파일()개, 수신한 파일()개, 수신된 파일()개...

이런 정보를 나타내고자 하는데... 어떻게 해야 할지...

도와주세요... !_!



오늘 날씨가 너무 좋네여... !_!

오늘 무지 추울거라구 해서 두터운 외투 챙겨서 나왔는뎅...=_=

낼두 따뜻했음 좋겠네엽...^^

올만에... 수능 보는 날이 따뜻하면... ^^ 참 좋을것 같네여...



그럼... 모두들 감기 조심하시궁...^^

행복하세요~~~~~~~~~~~~~~~~~~~~~~~~~~*

1  COMMENTS
  • Profile
    김주석 1999.11.17 04:04
    김매경 wrote:

    > 안녕하세여... ^^

    > 파일에 관한 여러 자료를 찾아보았는데... 파일의 갯수를 세는 것은 없더라구요...

    > 파일의 크기나 생성날짜에 대한 정보를 아는 예제는 많은데...!_!

    >

    > 어느 한 디렉토리에 몇개의 파일이 있는지...

    > 셀수 있는 방법은 없나요?

    >

    > 제가 하고자 하는게...

    > 특정 디렉토리에 있는 파일을 송신하고, 또 다른 디렉토리에서는 다른 사람이 송신한 파일을 받아 두고... 뭐 이런걸 만들려구 하거든여...

    >

    > 그래서... 지금까지 송신한 파일()개, 수신한 파일()개, 수신된 파일()개...

    > 이런 정보를 나타내고자 하는데... 어떻게 해야 할지...

    > 도와주세요... !_!

    >

    > 오늘 날씨가 너무 좋네여... !_!

    > 오늘 무지 추울거라구 해서 두터운 외투 챙겨서 나왔는뎅...=_=

    > 낼두 따뜻했음 좋겠네엽...^^

    > 올만에... 수능 보는 날이 따뜻하면... ^^ 참 좋을것 같네여...

    >

    > 그럼... 모두들 감기 조심하시궁...^^

    > 행복하세요~~~~~~~~~~~~~~~~~~~~~~~~~~*



    음..제가 만든건요

    다음과 같은 조건에서의 코딩입니다. 도움이 되었으면 하는군요...

    사용컴포넌트 : 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;



    도움 되시길 바랍니다