Autor Beitrag
|TF|Alucard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

XP

BeitragVerfasst: Di 13.04.04 19:16 
hi,
weiß jemand wie ich möglichst kurz einen String nach jedem Zeichen trennen kann und jedes Zei´chen einzelnt neu in Variablen speichern kann?

mfG |TF|Alucard

_________________
Ich weiß nicht mit welchen Waffen der 3. Weltkrieg geführt wird, aber im 4. werden es Stöcke und Steine sein. [Albert Einstein]
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.04 19:22 
Tja, sorry, auch hier bleibt´s beim Verweis auf die Suche: Suche in der Delphi-PRAXiS EXPLODE, Suche in: Delphi-Forum, Delphi-Library EXPLODE. Ist eine Funktion, die Luckie gepostet hat. Orientier dich daran, und du wirst fündig werden.
|TF|Alucard Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

XP

BeitragVerfasst: Di 13.04.04 19:33 
Also das du (@MathiasSimmack) Links liebst hab ich mit gekriegt, aber ich raff diese Beispiele nicht; könnte die mir vielleicht jemand mal erklären? [@erklären = definieren (ohne Link)]

_________________
Ich weiß nicht mit welchen Waffen der 3. Weltkrieg geführt wird, aber im 4. werden es Stöcke und Steine sein. [Albert Einstein]
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.04 19:45 
|TF|Alucard hat folgendes geschrieben:
Also das du (@MathiasSimmack) Links liebst hab ich mit gekriegt, [...]

Das weniger. Ich wollte dir nur (wieder einmal) zeigen, dass du entsprechenden Quellcode bereits finden kannst. Da ich aber davon ausgehen muss, dass du den Suchbegriff nicht kennst, gebe ich ihn vor. Dazu sind die Suchtags schließlich da. Ich muss nicht schreiben: Such mal nach explode (was du vermutlich eh nicht machen würdest), sondern ich kann dich direkt an die Suchergebnisse verweisen.

Aber ernsthaft -

Du willst wirklich eine Erklärung?
Ganz ohne Link?
(Achtung, Provokation!) Auch ohne Code?

Du gehst deinen String vom Anfang an durch bis du auf dein Trennzeichen stößt. Das kann ein Komma sein, eine Pipe |, ein Semikolon ... was immer du willst. Alles davor kopierst du in ein dynamisches String-Array. Dann merkst du dir die neue Startposition und führst die Suche fort bis du wieder auf das Trennzeichen stößt. Jetzt kopierst du alles von der neuen Startposition bis zum zweiten gefundenen Trenner in den nächsten Eintrag des dynamischen Arrays. Und so geht es weiter bis zum Ende des Strings.

Aber mal ehrlich: Wenn du nach explode suchst, kommst du schneller zum Ziel und hast sofort verwertbaren Quellcode. Auf die Schnelle ein DP-Link: explode.
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Di 13.04.04 20:08 
Wenn du nur einzelne Zeichen auslesen willst, dann kannst du mit Copy machen.

X := Copy(S, 4, 2);

Kopiert aus dem String S ab dem 4'ten Zeichen 2 Zeichen in die Vaiable X.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.04 20:30 
Ich sehe gerade was: Wenn ich die Frage wörtlich nehme:
Zitat:
einen String nach jedem Zeichen trennen

dann ist explode wohl nicht das richtige, denn diese Funktion geht von der Situation aus, dass ein String anhand eines fest vorgegebenen Zeichens in mehrere Teile getrennt wird. Aber der o.g. Fall ist auch nicht gerade schwer -

1. Man nehme eine Stringliste und als Ausgangsbasis den berühmten Spruch:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
s  := 'Hallo, Welt!';

sl := TStringList.Create;
if(sl <> nilthen
try

2. In einer Schleife läuft man vom ersten Buchstaben bis zum letzten durch. (Für so genannte noobs: Da man vorher vielleicht nicht weiß wie lang der String ist, benutzt man schlicht und einfach die Funktion "length", die die Länge zurückliefert)
ausblenden Delphi-Quelltext
1:
    for i := 1 to length(s) do					

3. Jedes einzelne Zeichen des Strings kann nun über den Schleifenwert "i" angesprochen oder anderweitig benutzt werden. In unserem Fall hängen wir das Zeichen an die Stringliste ran:
ausblenden Delphi-Quelltext
1:
      sl.Add(s[i]);					

4. Jetzt die Kontrolle: Memo auf die Form und ausprobiert ob die Stringliste auch wirklich was enthält:
ausblenden Delphi-Quelltext
1:
2:
    Memo1.Clear;
    Memo1.Lines.Add(Format('"sl" enthält %d Einträge',[sl.Count]));

Allerding beginnt bei einer Stringliste der Index bei Null, darum muss die Schleife nun so aussehen:
ausblenden Delphi-Quelltext
1:
2:
    for i := 0 to sl.Count - 1 do
      Memo1.Lines.Add(sl[i]);

5. Und zum Schluss aufräumen:
ausblenden Delphi-Quelltext
1:
2:
3:
  finally
    sl.Free;
  end;

6. Fertig.
|TF|Alucard Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

XP

BeitragVerfasst: Di 13.04.04 23:20 
Ja danke, für die Bemühungen hier möchte ich insbesondere MathiasSimmack hervorheben, auch wenn ich die Lösung von bms eher verstehe. :wink:

mfG |TF|Alucard

_________________
Ich weiß nicht mit welchen Waffen der 3. Weltkrieg geführt wird, aber im 4. werden es Stöcke und Steine sein. [Albert Einstein]