LNet Tutorial
-
- Beiträge: 30
- Registriert: Mi 6. Aug 2008, 14:26
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Btw. ich benutze Synapse.
Das "XXX" soll einfach nur nen beliebigen Pfad darstellen...
Der erste Code-Schnipsel funktioniert ja einwandfrei.
Ich mach nen Login, wechsel das Verzeichnis, kopiere alle Dateinamen vom Verzeichnis in FtpList und gebe diese danach in einer ListBox aus. Funktioniert bis dahin.
Jetzt will ich aber, wenn das fertig ist, in ein anderes Verzeichnis wechseln und das selbige tun (andere ListBox zur Ausgabe). Blos schon der Verzeichniswechsel funktioniert nicht. Außerdem wird die Dateiliste (FtpList) des alten Verzeichnisses in die neue ListBox ausgegeben.
Pseudo-Code:
ChangeWorkingDir(A)
FTPClient.List(A) --> ListBox1.Items[i]:=FTPClient.FtpList.Items[i]
-----bis hier hin funktionierts
ChangeWorkingDir(B)
FTPClient.List(B) --> ListBox2.Items[i]:=FTPClient.FtpList.Items[i]
-----in ListBox2 wird das gleiche ausgegeben wie in ListBox1
Warum? Muss man sich vll erst auslogen und dann wieder neu einloggen. Dann würde es ja auch funktionieren, nur muss es ja auch so funktionieren, wie oben beschrieben.
Wie gesagt, schon der zweite ChangeWorkingDir schlägt fehl (Memo-Ausgabe)
grüße
Das "XXX" soll einfach nur nen beliebigen Pfad darstellen...
Der erste Code-Schnipsel funktioniert ja einwandfrei.
Ich mach nen Login, wechsel das Verzeichnis, kopiere alle Dateinamen vom Verzeichnis in FtpList und gebe diese danach in einer ListBox aus. Funktioniert bis dahin.
Jetzt will ich aber, wenn das fertig ist, in ein anderes Verzeichnis wechseln und das selbige tun (andere ListBox zur Ausgabe). Blos schon der Verzeichniswechsel funktioniert nicht. Außerdem wird die Dateiliste (FtpList) des alten Verzeichnisses in die neue ListBox ausgegeben.
Pseudo-Code:
ChangeWorkingDir(A)
FTPClient.List(A) --> ListBox1.Items[i]:=FTPClient.FtpList.Items[i]
-----bis hier hin funktionierts
ChangeWorkingDir(B)
FTPClient.List(B) --> ListBox2.Items[i]:=FTPClient.FtpList.Items[i]
-----in ListBox2 wird das gleiche ausgegeben wie in ListBox1
Warum? Muss man sich vll erst auslogen und dann wieder neu einloggen. Dann würde es ja auch funktionieren, nur muss es ja auch so funktionieren, wie oben beschrieben.
Wie gesagt, schon der zweite ChangeWorkingDir schlägt fehl (Memo-Ausgabe)
grüße
- af0815
- Lazarusforum e. V.
- Beiträge: 6211
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
lucster hat geschrieben:-----bis hier hin funktionierts
ChangeWorkingDir(B)
Ein ChangeWorkingDir mit ".." geht ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 30
- Registriert: Mi 6. Aug 2008, 14:26
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Der zweite ChangeWorkingDir funktioniert nicht.
Ich poste jetzt nochmal meine Code:
Ich glaube mit realtiven Pfad klappt das nicht.
will ja in diese beiden Pfad:
1. 'D:\pcupdate\HC700\LOG'
2. 'D:\ahsc\save\hsrawdata\'+Values[0]' bzw. Values[i] (der Pfad verändert sich in einer Schleife im Else-Zweig)
grüße
----
Hab mal die wichtigsten Befehlsbeschreibungen kopiert:
***
function List(Directory: string; NameList: Boolean): Boolean; virtual;
Download directory listing of Directory on FTP server. If Directory is empty string, download listing of current working directory. If NameList is True, download only names of files in directory. (internally use NLST command instead LIST command) If NameList is False, returned list is also parsed to FtpList property.
***
function ChangeWorkingDir(const Directory: string): Boolean; virtual;
Change currect working directory to Directory on FTP server.
***
function ChangeToRootDir: Boolean; virtual;
walk to upper directory on FTP server.
----
Ist daraus was zu schließen?
Ich poste jetzt nochmal meine Code:
Code: Alles auswählen
//Objekt von TFTPSend erzeugen
FTPClient := TFTPSend.Create;
//Host, Port, Nutzername und Passwort setzen
FTPClient.TargetHost:=IP;
FTPClient.TargetPort:=FTPPort;
FTPClient.UserName:=UserName;
FTPClient.Password:=Password;
//Verbinden
if not FTPClient.Login then
begin
FTPClient.Free;
MessageDlg('Fehler', ('Konnte keine Verbindung zu '+IP+' aufbauen.'), mtError, [mbOk], 0);
Exit;
end
else Memo1.Lines.Add('Verbindung zu '+IP+' hergestellt...');
//Verzeichniswechsel
FTPClient.ChangeWorkingDir('D:\pcupdate\HC700\LOG');
//Funtkion, die die Namen der Dateien des aktuellen Verzeichnisses in FtpList speichert, diese werden in ListBox1 ausgegeben
if FTPClient.List(FTPClient.GetCurrentDir, false) then
for i:=0 to FTPClient.FtpList.Count-1 do
ListBox1.Items.Add(FTPClient.FtpList.Items[i].FileName);
Memo1.Lines.Add('Log-Verzeichnis geladen...');
if not(Values[High(Values)]='-.-') then
begin
if Values[1]='-.-' then //wenn Datum selektiert ist
begin
//Verzeichniswechsel
FTPClient.ChangeWorkingDir('D:\ahsc\save\hsrawdata\'+Values[0]);
Memo1.Lines.Add(FTPClient.GetCurrentDir);
{hier wird immernoch das alte Verzeichnis ausgegeben}
if FTPClient.List(FTPClient.GetCurrentDir, false) then
for i:=0 to FTPClient.FtpList.Count-1 do
ListBox5.Items.Add
(FTPClient.GetCurrentDir+'/'
+FTPClient.FtpList.Items[i].FileName);
end
......
Ich glaube mit realtiven Pfad klappt das nicht.
will ja in diese beiden Pfad:
1. 'D:\pcupdate\HC700\LOG'
2. 'D:\ahsc\save\hsrawdata\'+Values[0]' bzw. Values[i] (der Pfad verändert sich in einer Schleife im Else-Zweig)
grüße
----
Hab mal die wichtigsten Befehlsbeschreibungen kopiert:
***
function List(Directory: string; NameList: Boolean): Boolean; virtual;
Download directory listing of Directory on FTP server. If Directory is empty string, download listing of current working directory. If NameList is True, download only names of files in directory. (internally use NLST command instead LIST command) If NameList is False, returned list is also parsed to FtpList property.
***
function ChangeWorkingDir(const Directory: string): Boolean; virtual;
Change currect working directory to Directory on FTP server.
***
function ChangeToRootDir: Boolean; virtual;
walk to upper directory on FTP server.
----
Ist daraus was zu schließen?
-
- Beiträge: 957
- Registriert: Mo 11. Sep 2006, 22:56
-
- Beiträge: 957
- Registriert: Mo 11. Sep 2006, 22:56