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 - Dateien auflisten (https://www.delphipraxis.net/139459-tidftp-dateien-auflisten.html)

Chefx 29. Aug 2009 11:11


TidFTP - Dateien auflisten
 
Hallo DBs,

Ich hab ein problem, nämlich ich will in einer Listview die Dateien die auf dem server liegen anzeigen lassen (Also dateiname ...).
Ich hab ungefähr 2 Stunden gebraucht bis ich das richtige gefunden hab aber irgendwie funktioniert das nicht so richtig.
Also hier der link zum Post.
so und der code:
Delphi-Quellcode:

procedure ...;
var
  l: TIdFtpListItems;
  i: integer;
  sl: TStringList;
begin
   sl := TStringList.Create;        
  idFTP1.Connect(true, -1);          
  idFTP1.List(sl, '*', true);        
  l := idFTP1.DirectoryListing;      
  for i := l.Count - 1 downto 0 do  
    if l[i].ItemType = ditDirectory
      then sl[i] := l[i].FileName  
      else sl.Delete(i);          
  idFTP1.Disconnect;                
   ListBox1.Items.Assign(sl);        
  sl.Free;                        
end;
Das problem ist das der Dateien hochladen kann (eine andere procedure mit der gleichen Tidftp) aber das anzeigen der dateien mit der Procedure geht nicht.
Wo liegt mein Fehler?

jfheins 29. Aug 2009 11:14

Re: TidFTP - Dateien auflisten
 
Also erstmal schreibt der Code die Dateien in eine Listbox, nicht in eine Listvie. Dann schreibt er nur Dateien, was dein Problem erklären könnte. Und drittens brauchst du nicht für jede Aktion wieder verbinden, was amchen un trennen - du kannst die Verbindung ruhig offenhalten ;)

Chefx 29. Aug 2009 11:21

Re: TidFTP - Dateien auflisten
 
ups,
ich wollt das erst in eine Listview machen aber wollte erstmal mit der Listbox das probieren. :lol:
Zitat:

Zitat von jfheins
Dann schreibt er nur Dateien, was dein Problem erklären könnte.

Sorry hab das nicht so richtig verstanden wie du das meinst. :gruebel:

jfheins 29. Aug 2009 11:31

Re: TidFTP - Dateien auflisten
 
Zitat:

Zitat von Chefx
ups,
ich wollt das erst in eine Listview machen aber wollte erstmal mit der Listbox das probieren. :lol:
Zitat:

Zitat von jfheins
Dann schreibt er nur Dateien, was dein Problem erklären könnte.

Sorry hab das nicht so richtig verstanden wie du das meinst. :gruebel:

Naja, was macht den das da:
Delphi-Quellcode:
if l[i].ItemType = ditDirectory
      then sl[i] := l[i].FileName  
      else sl.Delete(i);
Es lässt die Verzeichnisse durch und löscht die Dateien (aus der Anzeige)

Chefx 29. Aug 2009 11:34

Re: TidFTP - Dateien auflisten
 
:wall:
ok das war einfach nur dumm, sorry. :mrgreen:
Ist ja auch logisch. :roll:
jetzt funktioniert es.

danke jfheins :thumb: :thumb: :thumb:

Chefx 29. Aug 2009 14:47

Re: TidFTP - Dateien auflisten
 
ich komm jetzt wieder nicht weiter, wie kann ich in einem unterverzeichnis die dateien anzeigen?
z.B:
INC/
sollen alle dateien im Ordner INC angezeigt werden.

Ich hab das mit
Delphi-Quellcode:
IDftp1.changedir('INC');
... // dann der obere code
oder wie geht das :?:

jfheins 29. Aug 2009 15:47

Re: TidFTP - Dateien auflisten
 
Obwohl du offensichlich keine Hilfe möchtest (falls das so wäre, würdest du ja mehr Informationen bereitstellen, z.B. was passiert, was sollte passieren, welche Fehler kommen, etc.)
bin ich mal so frei und antworte trotzdem:

Ich sehe ... :glaskugel: ... ja, da ist etwas ... :glaskugel: ... es sieht aus wie ein Strich ... es ist ein Slash :mrgreen:

Probiers mal so: IDftp1.changedir('/INC/');

Chefx 29. Aug 2009 18:39

Re: TidFTP - Dateien auflisten
 
Zitat:

Zitat von jfheins
Obwohl du offensichlich keine Hilfe möchtest

Danke für die nette antwort :stupid:
wenn ich hilfe brauche poste ich, und da stehen dann bei mir die türen offen, wenn jemand noch mehr infos brauch postet es einfach. :mrgreen:
Ich hab es geahnt das das so geht :glaskugel:.

trotzdem ist noch der felher:
Code:
Erste Gelegenheit für Exception bei $760242EB. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 004D5047 in Modul 'Project2.exe'. Lesen von Adresse 00000020'. Prozess Project2.exe (5420)
Hier der gesamte Quelltext:
Delphi-Quellcode:
procedure ....;
var
  l: TIdFtpListItems;
  i: integer;
  sl,sd: TStringList;
begin
  if (ListView1.Items.Item[ListView1.ItemIndex].SubItems.Strings[0] = 'Ordner') and (ListView1.Items.Item[ListView1.ItemIndex].Caption <> '.') and (ListView1.Items.Item[ListView1.ItemIndex].Caption <> '..') then begin // . und .. ist erstmal nur zum testen ausgeschlossen
  listview1.Clear;
  sl := TStringList.Create;
  sd := TStringList.Create;
  idftp1.ChangeDir('/'+ListView1.Items.Item[ListView1.ItemIndex].Caption+'/'); // hier bleibt er im Debuge stehen
  idFTP1.List(sl,ListView1.Items.Item[ListView1.ItemIndex].Caption+'*',true);
  l := idFTP1.DirectoryListing;
  for i := l.Count - 1 downto 0 do
      if l[i].ItemType = ditDirectory
        then begin
            sl[i] := l[i].FileName;
            sd.Add('Ordner');
        end
        else begin
            sl[i] := l[i].FileName;
            sd.add('Datei');
        end;
    for i := 0 to l.Count - 1 do begin
        listview1.Items.Add.Caption:=sl.Strings[i];
        listview1.Items.Item[i].SubItems.Add(sd.Strings[i]);
    end;
    sl.Free;
    sd.Free;
  end;
end;
Die Baumstrucktur der Ordner und Dateien auf dem Server:
Code:
Server
  |
  |-- grafik
  |     |-- bild.jpg
  |
  |-- inc
  |    |-- home.inc
  |    |-- liste.inc
  |...
Wenn ich jetzt doppelklick auf graifk klicke in der Listview dann kommt der fehler obwohl er ja das innere des ordner also bild.jpg anziegen soll.

Wo ist mein fehler oder denkfehler?

Chefx 1. Sep 2009 13:53

Re: TidFTP - Dateien auflisten
 
Hey DBs, weiß wirklich keiner mein Fehler, ich hab das unendlich mal durchgeschaut aber ich weiß nicht wo er ist? :pale:

Klaus01 1. Sep 2009 14:07

Re: TidFTP - Dateien auflisten
 
.. was heißt durchgeschaut?

Hast Du dir einen Haltepunkt in der Routine gesetzt
und bist dann mit F8 durch die Routine marschiert?
Hast Du dir einige Variablen/Index in der WatchList (Ctrl+F5)
angeschaut?

Das Debug Tutorial

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Seite 1 von 2  1 2      

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