Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Memo Problem Zeile verschieben (https://www.delphipraxis.net/131819-memo-problem-zeile-verschieben.html)

himitsu 1. Apr 2009 19:14

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:

xZise 1. Apr 2009 22:30

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:
if Pos(',', Memo1.Lines[i - 1]) = Length(Memo1.Lines[i - 1]) then
einfach
Delphi-Quellcode:
if Memo1.Lines[i - 1][Length(Memo1.Lines[i - 1])] = ',' then
nehmen?

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

himitsu 2. Apr 2009 07:02

Re: Memo Problem Zeile verschieben
 
da aber mindestens
Delphi-Quellcode:
if (Memo1.Lines[i - 1] <> '') and (Memo1.Lines[i - 1][Length(Memo1.Lines[i - 1])] = ',') then
denn was passiert, wenn die Zeile lehr ist?
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.
Seite 2 von 2     12   

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