AGB  ·  Datenschutz  ·  Impressum  







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

StringReplace-Problem

Ein Thema von Tommy1988 · begonnen am 3. Nov 2007 · letzter Beitrag vom 3. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
Tommy1988
(Gast)

n/a Beiträge
 
#11

Re: StringReplace-Problem

  Alt 3. Nov 2007, 18:12
Moment.. ohne nachzugucken überlege ich mal..

"SelText." SelectedText denk ich mal, heißt es.

Ich gucke aber trotzdem noch einmal in das Manuell..
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#12

Re: StringReplace-Problem

  Alt 3. Nov 2007, 19:09
Folgender maßen habe ich alles gehandhabt:
Delphi-Quellcode:
procedure TForm5.btn2Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
Form1.Memo1.SelStart := Pos(FindText.Text,
Form1.Memo1.Lines.Text)-1;
Form1.Memo1.SelLength := Length(FindText.Text);
Form1.Memo1.SelText := StringReplace(Form1.Memo1.SelText,
FindText.Text, ReplaceText.Text, [rfIgnoreCase]);
end
else
begin
Form1.Memo1.SelStart := Pos(FindText.Text,
Form1.Memo1.Lines.Text)-1;
Form1.Memo1.SelLength := Length(FindText.Text);
Form1.Memo1.SelText := StringReplace(Form1.Memo1.SelText,
FindText.Text, ReplaceText.Text, []);
end;
Was die CheckBox zusagen hat, ist ja klar. Er beachtet auch die Groß- und Kleinschrebung völlig korrekt, was wiederum nicht so richtig klappt ist
[rfReplaceAll, rfIgnoreCase "rfReplaceAll": er ersetzt nur das erst gefundene, nicht alle.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: StringReplace-Problem

  Alt 3. Nov 2007, 19:20
1. Wenn ich sehe, dass hier von TForm5 auf die globale Variable Form1 zugegriffen wird, wird mir schon ganz anders. Aber das soll erstmal nicht unser Problem sein.
2. Das rfReplaceAll nur das erste Vorkommen ersetzt, glaube ich nicht. Wenn du das Suchen & Ersetzen nur auf den selektierten Text anwendest und dieser nur ein einmaliges Vorkommen hat, ist es doch irgendwie logisch, oder?
3. Du baust doch hier anscheinend einen Suchen & Ersetzen Dialog. Warum findet denn der Suchen Dialog nicht den Text und markiert ihn? Dann sollte die Routine unten das Ersetzen durchführen und wenn dann noch "Alle Vorkommen ersetzen" vom Nutzer ausgewählt ist, dann kann der Suchen-Dialog weiter suchen bis er nichts mehr findet. Das er hier markiert und ersetzt ist irgendwie recht merkwürdig.
4. Ich sehe nirgendwo in deinem Code wo und wie du rfReplaceAll angibst.
5. Schonmal den Debugger benutzt und dir den Inhalt der Variablen angeschaut?
6. Warum benennst du die Elemente nicht einfach mal nutzbar? Dann müssten wir nicht den Code anschauen was CheckBox1 macht, sondern wüssten beim Lesen von ckbIgnoreCase sofort, was die CheckBox bewirkt.
7. Warum soviel doppelter Code?

Delphi-Quellcode:
procedure TForm5.btn2Click(Sender: TObject);
var
  lFlags: TReplaceFlags;
begin
  lFlags := [];

  if ckbIgnoreCase.Checked then
    Include(lFlags, rfIgnoreCase);
  if ckbReplaceAll.Checked then
    Include(lFlags, rfReplaceAll);

  Form1.Memo1.Lines.Text := StringReplace(Form1.Memo1.Lines.Text, FindText.Text, ReplaceText.Text, lFlags);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 06:32 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