Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: String auf Tabulatoren prüfen

  Alt 17. Aug 2014, 10:23
Ich würde mir eine kleine Methode schreiben, die mir aus einem übergebenen String den Level (Anzahl der Tabs), den Tag (also 'Name', 'Alter','Vorbesitzer') und -falls vorhanden- den Wert, also den Zeil nach dem ':' liefert.
Delphi-Quellcode:
Type
  TTreeNodeDescriptor = record
    level : Integer;
    Caption : String;
    Value : String;
    Procedure FromString (aString : String);
  end;

Procedure TTreeNodeDescriptor.FromString (aString : String);
const
  TAB = #009; // ist das nicht irgendwo in SysUtils o.ä. schon deklariert?

var
  valueDelimiterFound : Boolen;

Begin
  Level := 0;
  Value := '';
  Caption := '';
  valueDelimiterFound := False;

  for c in aString do
    case c of
      TAB :
        Inc(Level);
      ':' :
        valueDelimiterFound := true;
      else
        if valueDelimiterFound then
           Value := Value + c
        else
           Caption:=Caption + c;
    end
end;
Der Code rennt 1x durch den String und verzichtet Pos und Delete.

Delphi-Quellcode:
for line in memo1.lines do begin
  t := TTreeLevelDescriptior.FromString(line);
  if t.Caption = 'Namethen
     writeln('Anzahl der Tabs (Level)',t.Level,'. Name=',t.Value);
end;
Und falls Du morgen den kompletten Baum aufspannen willst, hast Du mit der 'FromString' Methode schon alles, was Du brauchst.
  Mit Zitat antworten Zitat