Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String parsen (https://www.delphipraxis.net/79119-string-parsen.html)

Neutral General 16. Okt 2006 18:51


String parsen
 
Hi,

Wenn man von einem FTP-Server eine Liste anfordert bekommt man ne Stringlist die z.B so aussieht:

Delphi-Quellcode:
//
12-30-99  12:00a                4952  bootfont.bin
12-30-99  12:00a      <DIR>          Dokumente und Einstellungen
12-30-99  12:00a              993534  Highscore.bmp
12-30-99  12:00a      <DIR>          My Shared Folder
12-30-99  12:00a                   0  Programme
Jetzt will ich da die einzelnen Daten rausparsen.. Und zwar ab <DIR>. Das Datum etc brauch ich nicht... Bei Ordnern hab ichs so gemacht das ich geguckt hab ob '<DIR>' im String vorkommt und wenn ja dann isses ein Verzeichnis. Dann hab ich den String von 1 bis pos(DIR,S)+5 gelöscht und dann war der Dateiname Trim(Rest). Aber wie mache ich das bei Dateien? :|

Und das andere Problem ist das z.B hier die letzte Zeile... 'Programme' ist ein Ordner aber es wird als eine 0 KB Datei angezeigt...

:(

Gruß
Neutral General

arbu man 16. Okt 2006 19:05

Re: String parsen
 
nun guck dir am besten an wie die liste auf gebaut ist, wird das tab zeichen als trenner verwendet wenn ja kanst du das benutzen in dem du das ganze in einen 2D Array oder Liste überträgst wenn du das hast kanst du dann damit besser arbeiten z.b.
Delphi-Quellcode:
if (array[1,2] <> '<DIR>') and (array[1,2]<>'0') then //eine datei

shmia 16. Okt 2006 19:07

Re: String parsen
 
Zitat:

Zitat von Neutral General
Und das andere Problem ist das z.B hier die letzte Zeile... 'Programme' ist ein Ordner aber es wird als eine 0 KB Datei angezeigt...

Dein FTP-Server hat einen Bug! Einfach eine bessere Version oder einen anderen FTP-Server benützen.
Es gibt Übrigens viele verschiedene Formate (Unix, Windows, Netware) mit denen die Verzeichnisliste vom Server geliefert wird.
Ein guter FTP-Client benützt hier eine automatische Erkennung des Servertyps.

Neutral General 16. Okt 2006 19:17

Re: String parsen
 
Zitat:

Zitat von shmia
Zitat:

Zitat von Neutral General
Und das andere Problem ist das z.B hier die letzte Zeile... 'Programme' ist ein Ordner aber es wird als eine 0 KB Datei angezeigt...

Dein FTP-Server hat einen Bug! Einfach eine bessere Version oder einen anderen FTP-Server benützen.
Es gibt Übrigens viele verschiedene Formate (Unix, Windows, Netware) mit denen die Verzeichnisliste vom Server geliefert wird.
Ein guter FTP-Client benützt hier eine automatische Erkennung des Servertyps.

Is ja en normaler Indy-FTP Server:

Delphi-Quellcode:
//
    if FindFirst(Path,faAnyFile,SR) = 0 then
    begin
     repeat
        Item := ADirectoryListing.Add;
        Item.FileName := SR.Name;
        Item.Size := SR.Size;
        if SR.Attr = faDirectory then
         Item.ItemType := ditDirectory
        else
         Item.ItemType := ditFile;
      end;
      until FindNext(SR) <> 0;
     FindClose(SR);
    end;
Das is jetzt ein kleiner Ausschnitt wie die Dateien freigegeben werden und wo festgesetzt wird ob Ordner oder nicht...
Wenn dann ist da ein Fehler.. mom heißt das nicht if SR.Attr and faDirectory = faDirectory ? Mal ausprobieren.. Aber das andere Problem ist ja immernoch da :(

Und der Abstand zwischen dateigröße und datum (bei dateien) ist nicht immer gleich groß... kommt auf die länge der Dateigröße an -.-

EDIT: Ja mit SR.Attr and faDirectory klappts richtig..


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.

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