AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdFTP: Alles auflisten
Thema durchsuchen
Ansicht
Themen-Optionen

IdFTP: Alles auflisten

Ein Thema von Z4ppy · begonnen am 6. Apr 2009 · letzter Beitrag vom 2. Sep 2010
Antwort Antwort
Seite 2 von 2     12   
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: IdFTP: Alles auflisten

  Alt 28. Apr 2009, 14:39
Hallo,

es ist doch eingentlich egal, wie die Listen sortiert sind.

For i:= 0 to SL_ohneDetails.count -1 do
begin
for j:= 0 to SL_mit Details.count -1 do
begin
if pos(...) then

end;
end;
Klaus
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: IdFTP: Alles auflisten

  Alt 28. Apr 2009, 15:18
Wird wohl auch nicht gehen, denn was passiert, wenn eine Datei namens "abc" (ohne Endung) sowie ein Ordner namens "aabc" existiert?

MfG Z4ppy

€dit: Nun gut, das kann man mit Pos(' '+ListeOhneDetails[i],ListeMitDetails[j]) abfangen, allerdings bleibt dann das problem, wenn eine Datei namens "abc" sowie ein Ordner namens "xyz abc" da is
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: IdFTP: Alles auflisten

  Alt 30. Apr 2009, 19:44
Ich lös es jetz auf ne etwas modifizierte Holzhammermethode
Zwar noch nich umgesetzt, aber müsste gehen

Ich liste zweimal, einmal mit Details, einmal ohne.
Dann drehe ich sämtliche Strings in den beiden StringLists um und sortiere.
Anschliessend gucke, ob das letzte Zeichen (in der Liste mit Details) ein d ist, wenn ja, nehme ich den entsprechenden Eintrag aus der Liste ohne Details und drehe ihn wieder um

Ineffizient, wird aber funktionieren

Wenn jemand einen besseren Vorschlag hat, bitte her damit

MfG Z4ppy
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#14

Re: IdFTP: Alles auflisten

  Alt 30. Apr 2009, 19:52
Lass IdFTP die Arbeit machen

Hier mal ein Ausschnitt aus meiner FTPBrowser-Unit:
Delphi-Quellcode:
procedure TFtpBrowser.CreateDirectoryListing;
var
  i: Integer;
begin
  Working := True;

  if FFtp.Connected then
  begin
    FFtp.SendCmd('TYPE A');

    FFtp.List (nil, '-a', True);

    for i := 0 to Pred (FFtp.ListResult.Count) do
      CreateItemFromFileInfo (GetFileInfo(i));
  end;
  Working := False;
end;

procedure TFtpBrowser.CreateItemFromFileInfo(const FileInfo: TFileInfo);
var
  ListItem: TListItem;
begin
  if FileInfo.Filename <> '.then
  begin
    ListItem := FFiles.Items.Add;

    if FileInfo.FileType = 'Ordnerthen
      if Fileinfo.Filename <> '..then
        ListItem.ImageIndex := 0
      else
        ListItem.ImageIndex := 1
    else
      ListItem.ImageIndex := 2;

    ListItem.Caption := FileInfo.Filename;

    if FileInfo.Size > 1000000 then
      ListItem.SubItems.Add(IntToStr (FileInfo.Size DIV 1000000) + ' MB')
    else if FileInfo.Size > 1000 then
      ListItem.SubItems.Add(IntToStr (FileInfo.Size DIV 1000) + ' KB')
    else if FileInfo.Size > 0 then
      ListItem.SubItems.Add(IntToStr (FileInfo.Size) + ' Byte')
    else
      ListItem.SubItems.Add('n/a');

    ListItem.SubItems.Add(FileInfo.FileType);
    ListItem.SubItems.Add(FileInfo.Date);
  end;
end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: IdFTP: Alles auflisten

  Alt 2. Jul 2009, 20:45
Zitat von Z4ppy:

Wenn jemand einen besseren Vorschlag hat, bitte her damit ;)

MfG Z4ppy
Hallo Z4appy,

vielleicht hilft Dir ja noch dieser Tip.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: IdFTP: Alles auflisten

  Alt 2. Jul 2009, 21:33
Danke, werde ich mir angucken, wenn ich Ende Juli aus den Ferien zurückkomme (fahre morgen)

MfG Z4ppy

PS.: Mein Name bitte ohne a... Aber keine Sorge, das passiert so vielen
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#17

AW: Re: IdFTP: Alles auflisten

  Alt 2. Sep 2010, 19:31
Lass IdFTP die Arbeit machen

Hier mal ein Ausschnitt aus meiner FTPBrowser-Unit:
Delphi-Quellcode:
procedure TFtpBrowser.CreateDirectoryListing;
var
  i: Integer;
begin
  Working := True;

  if FFtp.Connected then
  begin
    FFtp.SendCmd('TYPE A');

    FFtp.List (nil, '-a', True);

    for i := 0 to Pred (FFtp.ListResult.Count) do
      CreateItemFromFileInfo (GetFileInfo(i));
  end;
  Working := False;
end;

procedure TFtpBrowser.CreateItemFromFileInfo(const FileInfo: TFileInfo);
var
  ListItem: TListItem;
begin
  if FileInfo.Filename <> '.then
  begin
    ListItem := FFiles.Items.Add;

    if FileInfo.FileType = 'Ordnerthen
      if Fileinfo.Filename <> '..then
        ListItem.ImageIndex := 0
      else
        ListItem.ImageIndex := 1
    else
      ListItem.ImageIndex := 2;

    ListItem.Caption := FileInfo.Filename;

    if FileInfo.Size > 1000000 then
      ListItem.SubItems.Add(IntToStr (FileInfo.Size DIV 1000000) + ' MB')
    else if FileInfo.Size > 1000 then
      ListItem.SubItems.Add(IntToStr (FileInfo.Size DIV 1000) + ' KB')
    else if FileInfo.Size > 0 then
      ListItem.SubItems.Add(IntToStr (FileInfo.Size) + ' Byte')
    else
      ListItem.SubItems.Add('n/a');

    ListItem.SubItems.Add(FileInfo.FileType);
    ListItem.SubItems.Add(FileInfo.Date);
  end;
end;
Da hab ich mal paar Fragen:

-Wo ist TListItem definiert?
-Wo ist der Filetyp definiert zB. "Ordner"?

Nun will ich das Home Verzeichnis des Servers erkennen. Ich gehe dabei davon aus das, wenn ich mich im Internet an einem FTP Server anmelde, meine Zugangsdaten mit meinem Home-Verzeichnis verknüpft sind, ich also nur auf dieses Verzeichnis Zugriff habe, in welchem dann alle Dateien und Ordner zu finden sind, zu denen ich die Zugriffsberechtigung besitze.

Nun will ich mich vom Indy Client aus mit diesem FTP-Server verbinden. Dazu muss ich ja erst mal wissen, welches mein Home Verzeichnis ist. Wie ist das normalerweise im Internet gelöst? Erhalte ich da mit dem Zugang den Namen meines Home Verzeichnisses oder ist dessen Name völlig egal. Wenn völlig egal, dann muss allerdings mein FTP Client wissen, wie er dieses Home Verzeichnis finden kann. Kann mir hier jemand sagen, mit welcher Methode ich das Home Verzeichnis erhalte?

Sorry, ich kann mein Anliegen nicht deutlicher beschreiben. Wo finde ich hierzu und zu FTP und Indy eine für den Anfänger assagekräftige Dokumentation?

Ich habe nur die Indys, wie sie mit Turbo Delphi mitgeliefert wurden. Leider sind da keine aussagekräftigen Demos dabei.

Ich will mein FTP Homeverzeichnis als Root setzen und dann mir alle Dateien auf dem FTP Sever anzeigen lassen. Später will ich Dateien auf den Server hochladen und vom Server runterladen können, weshalb ich die Verzeichnisstruktur sehen möchte. Am liebsten mit ShellTreeView und ShellListView. Aber ich muss ja dem ShellTreeView erst mal das Home Verzeichnis meines FTP Servers übergeben. Wie mache ich das? Wo gibt es da Beispiele?
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#18

AW: IdFTP: Alles auflisten

  Alt 2. Sep 2010, 19:47
Hi,
guck' mal hier: http://www.delphipraxis.net/153961-i...satzinfos.html Post #9

Das reduziert sich dann (wenn man meinen Code abzieht) auf:
Delphi-Quellcode:
procedure xyz.CreateDirectoryListing;
var
  i: Integer;
begin
    FFtp.SendCmd('TYPE A');

    FFtp.List (nil, '-a', True);

    for i := 0 to Pred (FFtp.ListResult.Count) do
      CreateItemFromFileInfo (FTP.DirectoryListing[i]);
end;

procedure xyz.CreateItemFromFileInfo(const FileInfo: TIdFTPListItem);
var
  ListItem: TListItem;
begin
  // Mach was mit FileInfo, z.B. mittels Listitem in eine Listview tun
end;
TListItem ist nur relevant, wenn du das Gedöns in eine Listview schmeißen möchtest.
Die Shell* Komponenten und FTP kannste knicken. Die operieren nur auf dem lokalen Dateisystem

Das Rootverzeichnis des FTP Servers ist normalerweise "/" - und da solltest du auch nach der Anmeldung direkt drinnen sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
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