Autor |
Beitrag |
hibbert
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 17.12.03 21:44
Hi,
wie kann ich einen Text aus einen String ausschneiden der zwischen 2 zeichen liegt.
z.B:
soll aus werden.
wie mache ich das ?
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.12.03 22:07
Es gibt mehrere Möglichkeiten.
1. Wenn dein String immer so aussieht, wäre bspw. StringReplace eine Idee, indem du das Dollarzeichen durch Nichts/Nüscht/Leerstring ersetzt.
2. Alternativ dazu kannst du auch den String mit SetLength und delete bearbeiten, um das erste und letzte Zeichen zu entfernen, wenn und solange es Dollarzeichen sind.
3. Mit zwei integer-Variablen die Position des ersten und des letzten Dollarzeichens herausfinden, und den Teil dazwischen mit copy herauskopieren.
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 17.12.03 22:13
opps,
ich habe mich falsch ausgedrückt, sorry.
ich meinte dass aus einem String wie
Zitat: | $username$Hallo du |
soewtas wird:
und die "$" entfernt werden und der username in einer Variabel gespeichert wird.
Das rest des Strings (in dem Falle Halo du) soll danach ebanfalls in einer Variable gespeichert werden.
sorry für meinen Fehler
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.12.03 22:19
explode. Damit kannst du einen String anhand eines Zeichens in ein Array zerlegen (ähnelt Perl/PHP und Co.). Allerdings startet dein String auch mit einem Dollarzeichen (was ich als Trenner vorschlagen würde), daher wird der erste Eintrag im Array wohl immer ein Leerstring sein - wenn alle deine Strings so aussehen.
Du musst wissen, ob du damit leben kannst. Ich könnte es ... 
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 17.12.03 22:24
MathiasSimmack hat folgendes geschrieben: | Du musst wissen, ob du damit leben kannst. Ich könnte es ...  |
Klar kann ich damit leben, denn ich kann das zeichen doch nachträglich durch "nichts" ersetzen
mhh, geht das nicht auch einfacher mit dem erstezen usw.
in etwa dieser art?
Zitat: | Memo1.Text := StringReplace(Memo1.Text,edit1.Text,edit2.Text,[rfReplaceAll]); |
Ist jetzt nur ein Beispiel zum erstezen, aber ich will ja einen Teil zwischen zwei Zeichen auslesen.
Kann ich nich auch irgendwie die anzahl der Zeichen zwischen den beiden "$" auslesen?
hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.12.03 22:37
Ersetzen? Wie jetzt?  Welchen Teil bei [url=www.delphi-forum.de/...xplode]explode[/url] hast du nicht verstanden? explode zerlegt den String, den du angibst, in ein Array. Als Trenner dient dabei das von dir gewählte Zeichen. Und da bietet sich das Dollarzeichen an, weil es ganz offensichtlich "username" von "hallo du" trennt:
Quelltext
Wie ich aber sagte, beginnt dein String ja auch schon mit einem Dollarzeichen. Das bedeutet, der (eigentlich nicht existente) Teil davor wird als Leerstring in das Array eingetragen.
Verstehst du das Prinzip nun? Wenn nicht, folge dem Link, kopier dir die Funktion und probier´s einfach mal aus!
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 17.12.03 23:26
ich komme mit der ganzen Funktion nicht klar.
Ich weiß nicht, wo und wie ich da meine eigene Variable bzw. String da einbinden kann und wie ich diesen einzeln abrufen kann.
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
MasterBilke
      
Beiträge: 38
WIN XP
D3 Prof
|
Verfasst: Do 18.12.03 08:04
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| hilfe := Pos(', ,', MSG); Wert1 := StrToInt(Copy(MSG, 1, hilfe-1)); Delete(MSG, 1, hilfe+2); hilfe := Pos(', ,', MSG); Wert2 := StrToInt(Copy(MSG, 1, hilfe-1)); Delete(MSG, 1, hilfe+2); hilfe := Pos(', ,', MSG); Wert3 := Copy(MSG, 1, hilfe-1); |
so krieg ich alle werte aus ein string der form
Delphi-Quelltext 1:
| String := 'xkoord, ,ykoord, ,nochnwert, ,'; |
raus..kannst ja sowas probieren...
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 18.12.03 11:25
hibbert hat folgendes geschrieben: | ich komme mit der ganzen Funktion nicht klar.
Ich weiß nicht, wo und wie ich da meine eigene Variable bzw. String da einbinden kann und wie ich diesen einzeln abrufen kann. |
Mensch, da gibt´s sogar ein Beispiel dazu, das du nur umbauen musst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var s : string; exparr : TStringDynArray; x : integer; begin s := '$username$hallo du'; exparr := explode('$',s);
for x := 0 to high(exparr) do ShowMessage( Format('Index %d = %s',[x,exparr[x]]) ); end; |
Und du willst mir erzählen, das hast du nicht selbst hinbekommen?
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Do 18.12.03 15:37
Danke !!
hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
|