Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Löschversuch funktioniert nicht (https://www.delphipraxis.net/197561-loeschversuch-funktioniert-nicht.html)

KodeZwerg 16. Aug 2018 22:00

AW: Löschversuch funktioniert nicht
 
Zitat:

Zitat von p80286 (Beitrag 1410903)
Eine weitere Möglichkeit wäre:

Wenn Performance irrelevant ist und es um verschiedene Möglichkeiten geht, hier noch einer:
Delphi-Quellcode:
var
  i: Integer;
  mytext : string;
begin
  myText := '';
  if Length(Edit1.Text) > 0 then
    for i := 1 to Length(Edit1.Text)-1 do
      myText := myText + Edit.Text[i];
  Edit1.Text := myText;
end;
Sollte das gleiche ergeben, ungetestet.

himitsu 16. Aug 2018 22:45

AW: Löschversuch funktioniert nicht
 
Das direkt über mir: Sorry, aber für sowas sollte man gesteinigt und gevierteilt werden => Chars "einzeln" aneinanderzuhängen,

aber nochmal was zu dem Copy => Delphi-Referenz durchsuchenLeftStr :angle:

p80286 16. Aug 2018 22:45

AW: Löschversuch funktioniert nicht
 
Da der TE ein Zeichen löschen möchte dachte ich, da
Delphi-Quellcode:
delete
ganz gut passen würde.
Daß ein
Delphi-Quellcode:
copy
das performantere
Delphi-Quellcode:
delete
bei der Verarbeitung von mehreren tausenden Sätzen ist, sollte sich inzwischen herumgesprochen haben.

Gruß
K-H

QHimitsu
Seit wann gibt es das denn`?
Ich dachte das wäre typisch Basic.

himitsu 16. Aug 2018 23:11

AW: Löschversuch funktioniert nicht
 
Seit mehr als 10 Jahren bestimmt. (spätestens seit FastStrings in Delphi übernommen wurde).
Die Unit StrUtils existiert schon ein Weilchen.



Copy/LeftStr oder Delete ist hier fast gleich performant, aber beim Copy hast den Vorteil, dass es nicht erst in einer Variable zwischengespeichert werden muß, da Funktion <> Prozedur.

Theoretisch ist Delete performanter, da es direkt den String behandelt und nichts umkopiert (so lange es nur eine Referenz auf den String gibt), also "inplace" den String behandelt, ohne dass "oftmals" überhaupt der Speichermanager ran muß, was hier aber eh sinnlos ist, da das Ergebnis am Ende sowieso wieder an die Komponente übertragen (kopiert) werden muß.



Ohne FastMM sind aber so Dinge wie Einzelcharoperationen einfach nur krank,
aber obwohl ab da "größerer" Speicher auch inpace vergrößert/verkleinert werden kann, so lange dahinter noch genug frei ist (kleinere Blöcke gibt es nur in gleichgroßen Gruppen, also ist dahinter nie etwas frei), bringt das hier nichts.

Luckie 17. Aug 2018 00:37

AW: Löschversuch funktioniert nicht
 
Leute, es geht nur um das manuelle Löschen eines Zeichens in einem Editfeld. Das wird wohl kaum 100.000 mal in der Sekunde passieren. Performance spielt hier absolut keine Rolle. Warum also jeden Thread mit mehr oder weniger sinnvollen, hoch gezüchteten und optimierten Code kaputt diskutieren? :roll:

himitsu 17. Aug 2018 02:56

AW: Löschversuch funktioniert nicht
 
Zitat:

Zitat von himitsu (Beitrag 1410929)
... bringt das hier nichts.

:roll: .

Daniel 17. Aug 2018 07:12

AW: Löschversuch funktioniert nicht
 
Zitat:

Zitat von Luckie (Beitrag 1410936)
Leute, es geht nur um das manuelle Löschen eines Zeichens in einem Editfeld. Das wird wohl kaum 100.000 mal in der Sekunde passieren. Performance spielt hier absolut keine Rolle. Warum also jeden Thread mit mehr oder weniger sinnvollen, hoch gezüchteten und optimierten Code kaputt diskutieren? :roll:

Danke. :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.
Seite 2 von 2     12   

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