Autor Beitrag
hibbert
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: 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
Zitat:
$username$
Zitat:
username
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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Mi 17.12.03 22:13 
opps, :oops:
ich habe mich falsch ausgedrückt, sorry.
ich meinte dass aus einem String wie
Zitat:
$username$Hallo du

soewtas wird:
Zitat:
Hallo Du

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 :oops:

thx hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: 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 :wink:

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



BeitragVerfasst: 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:
ausblenden Quelltext
1:
$username$hallo du					

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 38

WIN XP
D3 Prof
BeitragVerfasst: Do 18.12.03 08:04 
ausblenden 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

ausblenden Delphi-Quelltext
1:
String := 'xkoord, ,ykoord, ,nochnwert, ,';					


raus..kannst ja sowas probieren...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Do 18.12.03 15:37 
Danke !! :D

hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej