![]() |
Re: Memo Problem Zeile verschieben
es kommt dauf an ... bei TStrings/TStringList ist Text langsamer, da es den Gesamt-String erstmal aus den Einzel-Strings zusammensetzt und bei setzen zerlegt, wärend .Value direkt auf die Einzel-Strings zugreift.
TStrings in Verbindung mit TMemo ist wirklich langsamer, da es dort nur eine Umleitung zum "Memo" ist und im "Memo" der Inhalt als Gesamt-String gespeichert ist. Es ging aber mehr um das Prinzip ... also das man anhand seiner "Aufgabenstellung" auch zum Ziel kommt, indem man es "direkt" in Code umsetzt. :angel: |
Re: Memo Problem Zeile verschieben
Hallo,
ist es nicht sogar günstiger auf das Pos zu verzichten? Da man ja weiß wo es sein muss, kann man doch einfach gucken ob DA ein Zeichen ist? Also statt
Delphi-Quellcode:
einfach
if Pos(',', Memo1.Lines[i - 1]) = Length(Memo1.Lines[i - 1]) then
Delphi-Quellcode:
nehmen?
if Memo1.Lines[i - 1][Length(Memo1.Lines[i - 1])] = ',' then
Und wenn .Text beim Memo schneller ist, könnte es dann nicht schneller sein, einfach eine zweite StringList zu nehmen und die mit dem Text aus dem Memo zu füttern? Wollte ich nur so gesagt haben :) MfG xZise |
Re: Memo Problem Zeile verschieben
da aber mindestens
Delphi-Quellcode:
denn was passiert, wenn die Zeile lehr ist?
if (Memo1.Lines[i - 1] <> '') and (Memo1.Lines[i - 1][Length(Memo1.Lines[i - 1])] = ',') then
genau es kommt eine Exception :angel2:
Delphi-Quellcode:
var i: integer;
S: String; begin Memo1.Lines.BeginUpdate; for i := Memo1.Lines.Count - 1 downto 1 do begin S := Trim(Memo1.Lines[i - 1]); // eventuell auch einfach nur TrimRight if (S <> '') and (S[Length(S)] = ',') then begin Memo1.Lines[i - 1] := Copy(S, 1, Length(S) - 1) + Memo1.Lines[i]; Memo1.Lines.Delete(i); end; end; Memo1.Lines.EndUpdate; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 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