Thema: Delphi StringReplace

Einzelnen Beitrag anzeigen

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