![]() |
String parsen
Hi,
Wenn man von einem FTP-Server eine Liste anfordert bekommt man ne Stringlist die z.B so aussieht:
Delphi-Quellcode:
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? :|
//
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 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 |
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
|
Re: String parsen
Zitat:
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. |
Re: String parsen
Zitat:
Delphi-Quellcode:
Das is jetzt ein kleiner Ausschnitt wie die Dateien freigegeben werden und wo festgesetzt wird ob Ordner oder nicht...
//
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; 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