![]() |
Zeile in einem Memo ersetzen
Hallo ihr,
ich möchte in einem Memo bestimmte Zeilen sersetzen. Ich habe es schon mit erst löschen und dann neu add(string) probiert, jedoch flackert das zu sehr. Habt ihr eine Idee :?: Liebe Grüße loirad |
AW: Zeile in einem Memo ersetzen
Ohne Code, wie du es gemacht hast, kann man da schlecht was zu sagen.
|
AW: Zeile in einem Memo ersetzen
Hier der Code :arrow:
Delphi-Quellcode:
In Hilfe wird am Anfang die Textdatei eingelesen und in Ausgabe Buchstabe für Buchstabe langsam eingetragen!
Zeile:='';
for i:=0 to Hilfe.Lines.Count-1 do begin if length(Hilfe.Lines.Strings[i])>0 then for j:=1 to length(Hilfe.Lines.Strings[i]) do begin Zeile:=Zeile+Hilfe.Lines.Strings[i][j]; Ausgabe.Lines.Delete(i); Ausgabe.Lines.Add(Zeile); sleep(50); Application.ProcessMessages; end else Ausgabe.Lines.Add(Zeile); Zeile:=''; end; Variablen: i,j:integer; Zeile:string; Liebe Grüße loirad :!: |
AW: Zeile in einem Memo ersetzen
Haben die Memo.Lines kein BeginUpdate/EndUpdate?
|
AW: Zeile in einem Memo ersetzen
Tja, wie ersetzt man wohl eine Zeile in einer Stringliste?
Delphi-Quellcode:
entspricht (wenn die Zeile schon vorhanden ist)
Ausgabe.Lines.Delete(i);
Ausgabe.Lines.Add(Zeile);
Delphi-Quellcode:
.
Ausgabe.Lines[i] := Zeile;
also
Delphi-Quellcode:
oder man macht das Add vor der inneren Schleife, dann muß man nicht sändig prüfen.
if i < Ausgabe.Lines.Count then
Ausgabe.Lines.Add(Zeile) else Ausgabe.Lines[i] := Zeile; Aber da ein Memo nunmal nicht dafür gedacht ist, daß man sowas damit macht ...... BeginUpdate und eventuell noch DoubleBuffered aktivieren ... vielleicht wird es dann besser. |
AW: Zeile in einem Memo ersetzen
Kann man auch so machen:
Code:
// ersetzt in Memo1 die Zeile (aRow), auf welcher der Cursor aktuell steht (bzw. stand, bevor der Button gedrückt wurde)
procedure TForm1.Button1Click(Sender: TObject); var aRow: integer; begin with memo1 do begin aRow := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0); SelStart := Perform(EM_LINEINDEX, aRow, 0); Perform(EM_SCROLLCARET, 0, 0); SelLength := length(lines[aRow]); if aRow=lines.Count then SelText := 'Diese Zeile wurde ersetzt' else SelText := 'Diese Zeile wurde ersetzt'#13; end; end; |
AW: Zeile in einem Memo ersetzen
Super-himitsu's Vorschlag funktioniert perfekt - danke!!!!!!!!!!!
|
AW: Zeile in einem Memo ersetzen
Der von himitsu vorgeschlagene Weg setzt natürlich voraus, dass der Wert von i bereits bekannt und als solches im Programm fixiert ist - es sei denn, man fragt den Wert von i über ein Editfeld oder ähnliches ab.
Der alternative Vorschlag (von mir) dagegegen erlaubt ein völlig freies, dynamisches Vorgehen, da die auszutauschende Zeile erst zum aktuellen Zeitpunkt durch die nicht vorhersagbare, ad hoc erfolgte Plazierung des Cursors identifiziert wird. Notwendigerweise ist der dazu notwendige Code etwas komplexer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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