AGB  ·  Datenschutz  ·  Impressum  







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

Zeile in einem Memo ersetzen

Ein Thema von loirad · begonnen am 19. Okt 2011 · letzter Beitrag vom 22. Okt 2011
Antwort Antwort
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#1

Zeile in einem Memo ersetzen

  Alt 19. Okt 2011, 18:10
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
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Zeile in einem Memo ersetzen

  Alt 19. Okt 2011, 18:21
Ohne Code, wie du es gemacht hast, kann man da schlecht was zu sagen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#3

AW: Zeile in einem Memo ersetzen

  Alt 19. Okt 2011, 18:31
Hier der Code
Delphi-Quellcode:
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;
In Hilfe wird am Anfang die Textdatei eingelesen und in Ausgabe Buchstabe für Buchstabe langsam eingetragen!
Variablen: i,j:integer; Zeile:string;

Liebe Grüße
loirad
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Zeile in einem Memo ersetzen

  Alt 19. Okt 2011, 19:06
Haben die Memo.Lines kein BeginUpdate/EndUpdate?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.211 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zeile in einem Memo ersetzen

  Alt 19. Okt 2011, 19:33
Tja, wie ersetzt man wohl eine Zeile in einer Stringliste?
Delphi-Quellcode:
Ausgabe.Lines.Delete(i);
Ausgabe.Lines.Add(Zeile);
entspricht (wenn die Zeile schon vorhanden ist)
Ausgabe.Lines[i] := Zeile; .
also
Delphi-Quellcode:
if i < Ausgabe.Lines.Count then
  Ausgabe.Lines.Add(Zeile)
else
  Ausgabe.Lines[i] := Zeile;
oder man macht das Add vor der inneren Schleife, dann muß man nicht sändig prüfen.


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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Okt 2011 um 19:35 Uhr)
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Zeile in einem Memo ersetzen

  Alt 19. Okt 2011, 19:52
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;
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#7

AW: Zeile in einem Memo ersetzen

  Alt 22. Okt 2011, 14:50
Super-himitsu's Vorschlag funktioniert perfekt - danke!!!!!!!!!!!
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Zeile in einem Memo ersetzen

  Alt 22. Okt 2011, 18:01
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.
  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 02:01 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