AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringReplace

Offene Frage von "warefare"
Ein Thema von warefare · begonnen am 1. Jun 2007 · letzter Beitrag vom 1. Jun 2007
Antwort Antwort
warefare

Registriert seit: 31. Mai 2007
8 Beiträge
 
#1

StringReplace

  Alt 1. Jun 2007, 00:18
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.
Miniaturansicht angehängter Grafiken
replace_763.jpg  
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#2

Re: StringReplace und eckige Klammern

  Alt 1. Jun 2007, 00:20
bei den ReplaceFlags ein rfIgnoreErrors einfügen?!
  Mit Zitat antworten Zitat
warefare

Registriert seit: 31. Mai 2007
8 Beiträge
 
#3

Re: StringReplace und eckige Klammern

  Alt 1. Jun 2007, 03:37
Zitat von fLaSh11:
bei den ReplaceFlags ein rfIgnoreErrors einfügen?!
Ich habe bereits "rfIgnoreCase" ausprobiert .. rfIgnoreErrors gibts doch gar net oder sollte das ein scherz sein ;o

Hier mal die den "Convert Click" .. vllt sieht einer den Fehler:

Variablen
Code:
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;
Eingaben
Code:
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!');
Repeat Schleife
Code:

n := richedit1.Lines.Count;

repeat

//for n := 0 to richedit1.Lines.count-1 do begin
Zuweisung von Variabeln
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:
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;
Abbruchbedingung
Code:
    end;
                            //  end ;
 until (Pos(search_term, text) = 0);

   end;
komischerweise schmiert das programm nicht ab wenn ich eine "showmessage einbaue"
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: StringReplace und eckige Klammern

  Alt 1. Jun 2007, 07:06
Hai warefare,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS"

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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
warefare

Registriert seit: 31. Mai 2007
8 Beiträge
 
#5

Re: StringReplace und eckige Klammern

  Alt 1. Jun 2007, 15:04
Zitat von Sharky:
Hai warefare,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS"

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
Danke

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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz