Autor Beitrag
jamany
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: So 16.03.03 17:19 
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

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

(oder mit while...)

Der String kommt dadurch zustande, dass über

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: 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.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
jamany Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 16.03.03 21:26 
Splitten:
ausblenden 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;

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.