![]() |
Mehere zeilen ohne schleife aus memo "hohlen"??
Hallo mal wieder...
ich hab das prob das ich bisher immer wenn ich von einem Memo die zeilen von zb 5-100 in ein anderes memo kopieren wollte es mit einer schleife gemacht habe... so zb:
Delphi-Quellcode:
das dauert aber immer sehr lange! Gibt es da ne elegantere lösung?
for loop:=5 to 100 do
memo2.lines.add(memo1.lines[loop]); ich habe leider nichts im internet gefunden... eventuell hatte ich auch nur die falschen stichwörter. Könnt ihr mir weiter helfen? viele grüße Martin |
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Hai Nebos,
eventuell kannst Du das ganze ja schon dadurch beschleunigen das Du vor deine Schleife ein [oh]BeginUpdate;[/oh] für das "Zielmemo" setzt und danach natürlich ein ![]()
Delphi-Quellcode:
begin
Memo2.Lines.BeginUpdate; for loop:=5 to 100 do begin memo2.lines.add(memo1.lines[loop]); end; Memo2.Lines.EndUpdate; end; |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Memo? Passt besser zu VCL ;-) |
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Hallo,
etwas ungewöhnlich aber schneller als mit einer Schleife :stupid:
Delphi-Quellcode:
Nachtrag: (nicht genau gelesen) > Zeile 5-500
var i : Integer;
begin i := Memo1.Perform(EM_LINEINDEX, 501, 0); Memo2.Lines.BeginUpdate; Memo2.Lines.Add(Copy(Memo1.Text,1,i-2)); Memo2.Lines.EndUpdate;
Delphi-Quellcode:
var j,i : Integer;
begin j := Memo1.Perform(EM_LINEINDEX, 5, 0); i := Memo1.Perform(EM_LINEINDEX, 501, 0); Memo2.Lines.BeginUpdate; Memo2.Lines.Add(Copy(Memo1.Text,j,i-2)); Memo2.Lines.EndUpdate; |
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Ich habe es nicht ausprobiert, aber ich glaube Begin + EndUpdate ist bei einem einzigen Add nicht erforderlich.
|
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Das mag stimmen, aber hier sind es 96 :zwinker:
Delphi-Quellcode:
for loop:=5 to 100 do
memo2.lines.add(...); |
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Zitat:
Zitat:
|
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Moin, moin,
also Prinzipiell gibt es noch einen anderen Weg. Zugriff über Memo.Lines.Text ergibt den ganzen Memotext als String. Die einzelnen Zeilen sind durch #10#13 voneinander getrennt. Damit könnte man die #10#13 bis zur Startzeile zählen und dann die #10#13 bis zur Endzeile. Beide Positionen werden zwischengespeichert und der Bereich dann mit Copy herauskopiert. Wie sich das zeitlich verhält weiss ich nicht. Das hängt im Wesentlichen von einer schnellen erweiterten Pos-Suche ab. PS: Die neueren Delphi-Versionen haben meines Erachtens einige weitere Stringfunktionen und ich meine auch schonmal ein Pos-Routine in Assembler gesehen zu haben... Grüße // Martin |
Re: Mehere zeilen ohne schleife aus memo "hohlen"?
Zitat:
Zitat:
aber wenn ich mich recht erinnere, sind die Standard-Routinen von Delphi auch schon in ASM (oder umschaltbar in ASM und Pascal) z.B. Code-Library -> Object-Pascal / Delphi-Language ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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 by Thomas Breitkreuz