AGB  ·  Datenschutz  ·  Impressum  







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

replace-modalform schreiben

Ein Thema von sancho1980 · begonnen am 20. Jul 2006 · letzter Beitrag vom 21. Jul 2006
Antwort Antwort
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#1

replace-modalform schreiben

  Alt 20. Jul 2006, 20:04
hallo,
was der anhang mal werden soll, ist ein modal-dialog, der substring-vorkommnisse in einem string ersetzt.
die funktionen sind alle noch nicht geschrieben, momentan hänge ich an der routine, die ausgeführt wird, sobald 'weiter'
gedrückt wird...
wenn das formular gezeigt wird, wird das erste vorkommnis von old ausgewählt, so weit so gut
wenn dann weiter gedrückt wird, sollte automatisch das nächste ausgewählt werden, doch das tut's eigenartigerweise nicht, seht ihr vllt warum? schaut mal bitte rein, is ganz wenig code!
danke,
martin
Angehängte Dateien
Dateityp: rar ersetz_617.rar (8,1 KB, 6x aufgerufen)
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: replace-modalform schreiben

  Alt 20. Jul 2006, 20:11
Warum verwendest du nichr StringReplace ?
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#3

Re: replace-modalform schreiben

  Alt 20. Jul 2006, 20:17
Zitat von mkinzler:
Warum verwendest du nichr StringReplace ?
Das kommt später..
Das Problem ist einfach nur, dass das Selektieren des 2. Vorkommens in diesem TntMemo-Feld nicht funktioniert, obwohl ich es genauso mache, wie bei der OnShow-Funktion..wie du siehst, wird's ja beim ersten Mal noch korrekt ausgewählt
Das Ersetzen ist erstmal nebensächlich, der Benutzer soll ja erstmal gefragt werden, ob er auch wirklich ersetzen will...!
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: replace-modalform schreiben

  Alt 20. Jul 2006, 20:21
Zitat:
doch das tut's eigenartigerweise nicht, seht ihr vllt warum? schaut mal bitte rein,
Was macht er dann? Kommt ein fehler? wenn ja, welcher?
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#5

Re: replace-modalform schreiben

  Alt 20. Jul 2006, 23:42
Zitat von mkinzler:
Zitat:
doch das tut's eigenartigerweise nicht, seht ihr vllt warum? schaut mal bitte rein,
Was macht er dann? Kommt ein fehler? wenn ja, welcher?
Nein, kein Fehler.
Es wird nur einfach nicht ausgewählt.
Führ's einfach mal aus; Bei Oncreate wird das erste Vorkommen des Strings ausgewählt.
Klickst du auf "Weiter" 'soll' das nächste ausgewählt werden (schau dir mal den Code an, der ausgeführt wird, sobald auf "Weiter" geklickt wird..ist ziemlich ersichtlich was ich da erreichen will (denke ich mal)

danke,
martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: replace-modalform schreiben

  Alt 21. Jul 2006, 06:51
Ist new genauso lang wie old? Sonst wirst du deinem Ansatz sowieso Probleme bekommen.
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#7

Re: replace-modalform schreiben

  Alt 21. Jul 2006, 09:42
Zitat von mkinzler:
Ist new genauso lang wie old? Sonst wirst du deinem Ansatz sowieso Probleme bekommen.
Aber das ist nicht der Punkt.

Schau mal auf

procedure TReplaceDialog.FormShow(Sender: TObject); Da wird das erste Vorkommen ausgewählt mit

Delphi-Quellcode:
i := WidePosEx(old, self.TntMemo1.Text, self.index);
self.TntMemo1.SelStart := i - 1;
self.TntMemo1.SelLength := Length(self.old);
self.TntButton2.Enabled := true;
self.index := i + Length(self.old);
In procedure TReplaceDialog.TntButton2Click(Sender: TObject); soll das nächste Vorkommen von old ausgewählt werden mit

Delphi-Quellcode:
i := WidePosEx(old, self.TntMemo1.Text, self.index);
//ShowMessage(IntToStr(i));
self.TntMemo1.SelStart := i - 1;
self.TntMemo1.SelLength := Length(self.old);
self.TntButton2.Enabled := true;
self.index := i + Length(self.old);
Also quasi genau der gleich Code wir oben. Wenn ich auch noch ein ShowMessage einfüge (Kommentar), dann sehe ich, dass auch das nächste Vorkommen richtig gefunden wurde, aber eigenartigerweise das mit dem Auswählen im Memo nicht klappt...Darum geht's
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: replace-modalform schreiben

  Alt 21. Jul 2006, 09:51
Solange du keine Ersetzungen machst, wenn aber (und die Länge differiert) bekommst du Probleme.
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#9

Re: replace-modalform schreiben

  Alt 21. Jul 2006, 09:57
Zitat von mkinzler:
Solange du keine Ersetzungen machst, wenn aber (und die Länge differiert) bekommst du Probleme.
Nein bekomm ich nicht.
Änder mal procedure TReplaceDialog.FormShow(Sender: TObject); ab:

Delphi-Quellcode:
i := WidePosEx(old, self.TntMemo1.Text, self.index);
  self.TntMemo1.SelStart := i - 1;
  self.TntMemo1.SelLength := Length(self.old);
  self.TntMemo1.SelText := '1234';
  self.TntButton2.Enabled := true;
  self.index := i + Length(self.old);
Das mit dem Ersetzen geht dann alles ganz einfach. Das Problem ist das Auswählen.

edit:

PS: Habs grad raus: Vor dem zweiten self.TntMemo1.SelStart := i - 1; muss noch ein self.TntMemo1.SetFocus();
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  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 18:31 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