![]() |
StringReplace
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich bin neu hier :) Habe eigentlich nur im Informatikunterricht mit delphi gearbeitet aber nu wo ich mein Abi habe da brauche ich es doch schon wieder *g* Konkret zu meinem Problem: Ich habe ein kleines Tool geschrieben mit dem man gewisse Abschnitte aus einem Text ersetzen kann. Um dies zu realisieren habe ich die Funktion StringReplace genutzt.. das funktioniert soweit auch super. Allerdings klappt es nicht wenn die variable "replace" ( = replace_item.text ) wie in dem bild zu sehen eine eckige klammer hat. siehe unten, neues problem Da ich für ein Forum aus einer Tabelle "post_text" alte BBCodes entfernen muss à la "[img:width:height] muss ich unbedingt eckige Klammern verwenden können. |
Re: StringReplace und eckige Klammern
bei den ReplaceFlags ein rfIgnoreErrors einfügen?!
|
Re: StringReplace und eckige Klammern
Zitat:
Hier mal die den "Convert Click" .. vllt sieht einer den Fehler: Variablen
Code:
Eingaben
procedure TForm1.convertClick(Sender: TObject);
var search_term, text, result, del_to_sign, replace, del_string :string; n, del_to_sign_pos, speicher, i, position, del_to_sign_pos_real:integer;
Code:
Repeat Schleife
begin
search_term := trim(item.text) ; if (text <> '' ) and (search_term <> '') then showmessage('Alles Ok !') else if (text = '' ) and (search_term = '') then showmessage('Eingaben überprüfen!');
Code:
Zuweisung von Variabeln n := richedit1.Lines.Count; repeat //for n := 0 to richedit1.Lines.count-1 do begin
Code:
text := richedit1.Text ; //(richedit1.text, 0, length(richedit1.text));
begin if (delete_to_sign.text <> '') then begin del_to_sign := trim(delete_to_sign.text); end; if (replace_with.text <> '') then begin replace := trim(replace_with.text); end; Position:=Pos(search_term, text); del_to_sign_pos_real := (Pos(del_to_sign, text) ) ; del_to_sign_pos := (Pos(del_to_sign, text) - Position ); if bedingung
Code:
Abbruchbedingung
if ( position < del_to_sign_pos_real) AND (Pos(search_term, text) <> 0) then begin // Pos <> o wichtig !! da er sonst den anfang wieder löscht
del_string := copy(text, position, (del_to_sign_pos)+1); s := StringReplace(richedit1.text, del_string, replace,[rfReplaceAll,rfIgnoreCase]); richedit1.text := s ; end else if ( position > del_to_sign_pos_real) then begin del_to_sign_pos_real := (PosEx(del_to_sign, text, position) - Position); del_string := copy(text, position, (del_to_sign_pos_real)+1 ); s := StringReplace(richedit1.text, del_string, replace,[rfReplaceAll,rfIgnoreCase]); richedit1.text := s ; //ShowMessage(inttostr(position)); ---> wenn nicht ausgeklammert dann klappt zumindest ein teil end;
Code:
komischerweise schmiert das programm nicht ab wenn ich eine "showmessage einbaue"
end;
// end ; until (Pos(search_term, text) = 0); end; wenn ich diese aber auskommentiere dann schmiert er ab .. das gleiche bei den eckigen klammern vllt ist die abbruchbedingung aber auch net so toll edit: habe gerade noch rausgefunden, dass er mehr ersetzt als er soll wenn der string mit dem man ersetzen will länger ist als der eigentliche string den man überschreiben will |
Re: StringReplace und eckige Klammern
Hai warefare,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS" :-D Sei doch bitte so nett und hänge das Bild in deinem ersten Posting als Anhang an. Nicht jeder hat eine DSL-Leitung und möchte mehr als 70kByte laden müssen. Klicke dafür einfach bei deinem ersten Posting auf den [EDIT] Button. Danke :-D |
Re: StringReplace und eckige Klammern
Zitat:
Hmm da musst mir aber mal einen zeigen.. in einem Programmierer Forum sollte DSL eigentlich Standard sein. Ich jedenfalls kenne keinen der noch mit nem 56K Modem rumeiert. Werd mal sehen wie ich jetzt die Abbruch Bedingung überarbeiten kann.. Edit: Ok also es klappt alles aber wenn der "replace term" in etwa dem "search_term" ähnelt dann hat er probleme das nächste wort zu finden und ersetzt deshalb nur das erste Vorkommen. Vllt muss ich nen counter doer so einbauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz