Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdFTP Get - Probleme mit variablen Dateinamen (https://www.delphipraxis.net/77351-tidftp-get-probleme-mit-variablen-dateinamen.html)

Andidreas 18. Sep 2006 14:16


TIdFTP Get - Probleme mit variablen Dateinamen
 
aloha

hab ein kleines problem bei nem ftp download...

ich möchte gerne eine datei von einem ftp server downloaden, habe aber nicht denn vollständigen namen!
wie muss ich dies im get befehl darstellen??? hat das vielleicht auch schon mal jemand probiert???

folgendes geht nicht

Delphi-Quellcode:
FTP.Get('unvollständiger_datei_name*', 'C:\Temp\'+ FormatDateTime('yyyymmdd', Date) + '.txt', True, False);

SirThornberry 18. Sep 2006 14:36

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
Das funktioniert genau so wie bei einer lokalen Datei auch. In Word kannst du auch nicht bei Datei öffnen "*.*" angeben. Das ist auch logich, denn es könnte mehrere Datei geben welche der Maske entsprechen. Dir wird nichts anderes übrig bleiben als den gesammten inhalt aufzulisten und die Datei herauszusuchen aus den Ergebnissen.

Andidreas 19. Sep 2006 09:37

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
kann ich die files vom ftp server auch über findfirst und findnext auslesen???


bzw. kennt jemand ne bessere möglichkeit?

marabu 19. Sep 2006 11:00

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
Hallo Andreas,

vielleicht hilft dir ein wenig Code auf die Sprünge: klick

Grüße vom marabu

Andidreas 19. Sep 2006 12:42

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
hey marabu

danke erst mal für die code beispiele...

leider hab ich en kleines problem...
ich kann keine variable vom typ TIdFtpListItems erstellen :(

brauch ich hierfür ne bestimmte uses???

Andidreas 19. Sep 2006 14:22

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
ok ich hab mir inzwischen so weitergeholfen:

Delphi-Quellcode:
procedure TMain_Form.btn_shwfilesClick(Sender: TObject);

var
blEntrys     : Boolean;
i            : Integer;
s            : String;
slFiles      : TStringList;



begin

  blEntrys := True;

  If edt_directory.Text = '' Then
  Begin
    MessageDlg('Some Entrys are Missing!', mtWarning, [mbOk], 0);
    blEntrys := False;
  End;

  If blEntrys = True Then
  Begin
    FTP.ChangeDir(edt_directory.Text);
  End;

  slFiles := TStringList.Create;
  FTP.List(slFiles, '*', True);

  For i := 0 To slFiles.Count - 1 Do
  Begin
    lstbox_files.Items.Add(slFiles.Strings[i]);
  End;

end;
jetzt hab ich nur noch das problem, das ich zusätzlich zu dem dateinamen viel unnützen schrott mit angezeigt bekommen...
z.B.
"drw-rw-rw- 1 user group 62119 Sep 11 23:00 Dateiname.txt"

Aenogym 19. Sep 2006 14:44

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
du kannst dir den dateinamen doch einfach mit Copy() extrahieren. schließlich steht er am ende der zeile. ergo gehst du (mit Pos() ) soweit zurück, bis du zum datum kommst und kopierst dir dann den dateinamen raus.

aeno

Andidreas 19. Sep 2006 14:49

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
jupp genau auf die idee bin ich gerade auch gekommen und programmier sie mir schon...

ich würde nur gern des bsp. vom marabu nehmen weil des wesentlich einfach ist...

aber so wie er das gemacht hat wills bei mir net funken :-/

Aenogym 19. Sep 2006 14:52

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
Zitat:

Zitat von Andidreas
aber so wie er das gemacht hat wills bei mir net funken :-/

benutzt du denn auch indy9?

Andidreas 19. Sep 2006 15:28

Re: TIdFTP Get - Probleme mit variablen Dateinamen
 
so hier jetzt mal mein quellcode über denn ich die Dateinamen herausfinde...

Delphi-Quellcode:
//******************************************************************************
// Show Files from FTP Directory                                              *
//******************************************************************************

procedure TMain_Form.btn_shwfilesClick(Sender: TObject);

var
blEntrys     : Boolean;
i            : Integer;
sFileName    : String;
slFiles      : TStringList;

begin

  blEntrys := True;

  If edt_directory.Text = '' Then
  Begin
    MessageDlg('Some Entrys are Missing!', mtWarning, [mbOk], 0);
    blEntrys := False;
  End;

  If blEntrys = True Then
  Begin
    FTP.ChangeDir(edt_directory.Text);
  End;

  slFiles := TStringList.Create;
  FTP.List(slFiles, '*', True);

  For i := 0 To slFiles.Count - 1 Do
  Begin
    sFileName := fnConvertFileNameFTP(slFiles.Strings[i]);
    mem_files.Lines.Add(sFileName);
  End;

end;

//******************************************************************************
// Convert File Name                                                          *
//******************************************************************************

function TMain_Form.fnConvertFileNameFTP(FTPListLine : String) : String;

var
i, iLen, iPos : Integer;

begin

  iLen := Length(FTPListLine);

  For i := iLen - 1 DownTo 0 Do
  Begin
    If FTPListLine[i] = #32 Then
    Begin
      iPos := i + 1;
      Break;
    End;
  End;

  fnConvertFileNameFTP := Copy(FTPListLine, iPos, ((iLen - iPos) + 1));

end;
hmm ich weiß nicht welche indys ich verwende... wie find ich das denn raus?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz