Entwickler-Ecke

Sonstiges (Delphi) - StringReplace ?!


Mark - Fr 29.10.04 11:50
Titel: StringReplace ?!
Hi,

ich bekomme die Funktion StringReplace nich so richtig zum laufen. Ich hab einen Eintrag in einer Stringliste (c:\blabla)... diesen eintrag will ich als datei öffnen lassen. das geht aber nich am ende der liste noch ein #13#10 steht. ich will das mit stringreplace entfernen in dem ich #13#10 einfach durch '' ersetze... aber ich bekomms nich so richtig hin.

Delphi-Quelltext
1:
 StringReplace(#13#10,'',memoStrList.Text[i]);                    


quasi so irgendwie ;)

kann mir da vielleicht jemand helfen. wäre nett :lol: :)

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Delete - Fr 29.10.04 11:54

Zitat:

aber ich bekomms nich so richtig hin

Könntest du dies etwas näher ausführen oder sollen wir jetzt raten, was nicht geht und wie es sich zeigt? :roll: "Geht nicht.", "Es kommen Fehler." sind immer äußert hilfreiche Fehlerbeschreibungen.

Ich werfe mal einen Blick in meine Glaskugel, da sist in diesem Fall die Delphi Hilfe, und die sagt mir das StringReplace eine Funktion ist. Und Funktionen haben die Eigenart etwas zurückzugeben, was steht meinst in der Hilfe.


matze - Fr 29.10.04 12:27

für deinen Fall könnest du auch mal die Funktion TRIM versuchen. ich glaube die macht das auch


jasocul - Fr 29.10.04 12:35

OH hilft:
Zitat:

type
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;


Du siehst, es ist eine Funktion. Das Ergebnis der Ersetzung wird als Funktionsergebnis zurück gegeben. Der erste Parameter ist der String, der durchsucht werden soll. Da const davor steht, wird der auch nicht verändert!
In OldPattern steht dein Suchbegriff und in NewPattern dein neuer Begriff.
Die Flags sprechen für sich selbst.

Delphi-Quelltext
1:
  NeuerString := StringReplace(DeinString, #13#10'', [rfReplaceAll]);                    

Sollte funktionieren.


Mark - Fr 29.10.04 12:58

jasocul hat folgendes geschrieben:
OH hilft:
Zitat:

type
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;


Du siehst, es ist eine Funktion. Das Ergebnis der Ersetzung wird als Funktionsergebnis zurück gegeben. Der erste Parameter ist der String, der durchsucht werden soll. Da const davor steht, wird der auch nicht verändert!
In OldPattern steht dein Suchbegriff und in NewPattern dein neuer Begriff.
Die Flags sprechen für sich selbst.

Delphi-Quelltext
1:
  NeuerString := StringReplace(DeinString, #13#10'', [rfReplaceAll]);                    

Sollte funktionieren.


danke das halt geholfen... nur noch eins, mein "NeuerString" hat nach dem ausführen den Wert #0 anstatt c:\blabla ... und dann sagt er natürlich das er die datei nich finden kann. rofl :?


jasocul - Fr 29.10.04 13:00

Hmm, vielleicht war es nicht gut genug von mir beschrieben.
Statt DeinString sollte natürlich memoStrList.Text[i] dort stehen, wenn ich dein Beispiel zu Grunde lege.


Mark - Fr 29.10.04 13:02

jasocul hat folgendes geschrieben:
Hmm, vielleicht war es nicht gut genug von mir beschrieben.
Statt DeinString sollte natürlich memoStrList.Text[i] dort stehen, wenn ich dein Beispiel zu Grunde lege.

doch das hab ich schon angepasst ->

Delphi-Quelltext
1:
s := StringReplace(memoStrList.Text[i],#$D#$A,'',[rfReplaceAll]);                    


aber s is wie gesagt nach dieser zeile #0 obwohl er memoStrList.Text richtig einliest (c:\blabla)

EDIT: hat sich erledigt... bei einer Stringlist kann man nich mit .text[i] arbeiten. wenn man das macht spuckt er einem nich die zeile aus sondern zeichen für zeichen.