Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi komplexes parsen eines Strings (https://www.delphipraxis.net/8394-komplexes-parsen-eines-strings.html)

lkz633 3. Sep 2003 17:53


komplexes parsen eines Strings
 
Hi,

habe den ganzen Tag versucht, dies hinzubekommen, ohne Erfolg.

Ich habe Strings im folgenden Format:

'-r-------- 1 root root 9323 Aug 30 2002 INSTALL'

Dies ist das Ergebnis eines idftp.list();

Jetzt versuche ich an die Rechte, Groese, Filename usw einzeln heranzukommen.

Anscheinend ist noch nicht einmal die Anzahl der Leerzeichen konstant.

Hat dies schon mal jemand geschafft?

Herzlichen Dank fuer eure Hilfe
lkz633

JoelH 3. Sep 2003 17:58

hmm,
 
ist doch egal wieviele Leerzeichen es sind hauptsache es sind welche, dort ist die Trennung. Ich seh da kein problem, man geht einfach CHar für Char durch den String durch und wenn man auf ein leerzeichen stösst fängt was neues an, ausser es kommt wieder ein Leerzeichen.

JoelH 3. Sep 2003 18:17

hmm,
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier mal ein kleine Projekt dazu ist, in Kylix aber die .pas kannste zur not ja auch so öffnen. brauchst auf der Form einen button1 ein edit1 und ein Memo1

Delphi-Quellcode:
function TForm1.encode(h:String):TStringlist;
var z :string;
    i : integer;
    rueckgabe : TStringlist;
begin
  rueckgabe := TStringlist.Create;
  rueckgabe.Clear;
  i := 1;
  z := '';
  while (i < length(h)) do
  begin
    if h[i] <> #32 then
    begin
      z := z + h[i];
      inc(i);
    end
    else
    begin
      rueckgabe.Add(z);
      z := '';
      inc(i);
      while (h[i] = #32) do
        inc(i);
    end;
  end;
  if (trim(z) <> '') then rueckgabe.add(z);
  result := rueckgabe;
end;
du übergibst einen String und bekommst eine Stringlist zurück.

lkz633 3. Sep 2003 18:58

Re: komplexes parsen eines Strings
 
:D :D Vielen, vielen Dank fuer deine Hilfe, die Idee mit der Stinglist find ich klasse! :D :D

2 Mini-Bugs:

1) es muss
Code:
(i <= length(h))
heissen

2) Falls der Name der Datei auch Lerzeichen enthaelt, fehlt der Teil nach dem ersten lehrzeichen bzw ist in zusaetzlichen Strings enthalten. Koenntest du mir dabei nochmal helfen, dass dies in einem steht?

Nochmals danke und Gruss
lkz633

Wormid 3. Sep 2003 19:13

Re: komplexes parsen eines Strings
 
Arbeitest Du mit der Komponente TNMFTP von Delphi?
Die hat nämlich ne Eigentschaft "ParseList"... Wenn die auf True ist, wird nach einem List automatisch geparst und alles hübsch ordentlich in der Eigenschaft "FTPDirectoryList" abgelegt.

Gruß

Wormid

JoelH 3. Sep 2003 19:13

hmm,
 
naja ich sag mal so, das mit den Namen ist so eine Sache, weil dies leider nur in der Windowswelt wirklich legal ist. aber das andere ist ein Bug :(

Ich hasse es einfach dass Arrays bei 0 losgehen, Strings aber nicht. Da ich öffters mit Arrays arbeite ist eben die Standardschleife von 0 bis length -1 :(

lkz633 3. Sep 2003 19:19

Re: komplexes parsen eines Strings
 
Zitat:

Zitat von Wormid
Arbeitest Du mit der Komponente TNMFTP von Delphi?
Die hat nämlich ne Eigentschaft "ParseList"... Wenn die auf True ist, wird nach einem List automatisch geparst und alles hübsch ordentlich in der Eigenschaft "FTPDirectoryList" abgelegt.

Ich arbeite mit den Indy Components.

Auch da wird eine Eigenschaft DirectorzListing gefuellt, dies dauert aber ungefaehr 30 mal so lang, wie wenn ich die Stringliste parse

Gruss lkz633


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 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