Entwickler-Ecke

Sonstiges (Delphi) - zeilen einzeln bearbeiten und splitten


jamany - So 16.03.03 17:19
Titel: zeilen einzeln bearbeiten und splitten
Ich habe in einer String-Variablen einen Text, der über mehrere Zeilen geht:

Zeile1;bla;bla
Zeile2;bla;bla

Und ich möchte jetzt mit jeder einzelnen Zeile etwas machen? Wie macht man das unter Delphi?

Unter CGI würde es heißen


Quelltext
1:
2:
3:
foreach $line (@string) { 
//was gemacht werden soll
}

(oder mit while...)

Der String kommt dadurch zustande, dass über


Quelltext
1:
S := IdHTTP1.Get('http://localhost/text.php');                    


die Ausgabe der Website eingelesen wurde.

Und mit welchen Befehlen kann ich die einzelnen Zeilen an dem Semikolon splitten?


derDoc - So 16.03.03 19:07

Wenn dir die Zeilen wichtig sind, dann benutz doch einfach eine StringList, dann kannst du auf die Lines zugreifen.


jamany - So 16.03.03 19:29

was meinst du mit, " wenn mir die zeilen wichtig sind"?

Wie könnte ich es denn am Geschicktesten machen? Und wie splitte ich?


wulfskin - So 16.03.03 21:26

Splitten:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
type
  TStrArray = Array of String;

procedure Explode(const Trennzeichen, Zeichenkette: String; out StrArray: TStrArray);
var
  I: integer;
  S, T: String;
begin
  S := Zeichenkette;
  T := Trennzeichen;
  if Copy(S, 1, Length(T)) = T then
    Delete(S, 1, Length(T));
  if Copy(S, Length(S) - Length(T) + 1, Length(T)) = T then
    Delete(S, Length(S) - Length(T) + 1, Length(T));
  I := 1;
  while Pos(T, S) > 0 do begin
    SetLength(StrArray, I);
    StrArray[I - 1] := Copy(S, 1, Pos(T, S) - 1);
    Delete(S, 1, Pos(T, S) + Length(T) - 1);
    Inc(I);
    if Pos(T, S) = 0 then begin
      SetLength(StrArray, I);
      StrArray[I - 1] := S;
      exit;
    end;
  end;
end;


Delete - So 16.03.03 22:39

Such noch mal nach Explode hier im Forum, da gibt es noch eine zweite Funktion, die eventuell besser ist.