![]() |
erstes zeichen in einem edit löschen
hi,
hat jemand eine idee, wie man das erste zeichen in einem editfeld löschen, bzw. ändern kann, ohne das sich die restlichen zeichen ändern? das ganze soll dann so aussehn, dass wenn man einen button anklickt das erste zeichen in dem edit gelöscht wird. schon mal danke im voraus. PS: ich programmiere noch nicht so lange, also wäre ich dankbar wenn ihr es einfach erklärt :-D . |
Re: erstes zeichen in einem edit löschen
Hi,
Delphi-Quellcode:
Florian
Edit1.Text := Copy(Edit1.Text, 2, length(Edit1.Text);
|
Re: erstes zeichen in einem edit löschen
Delphi-Quellcode:
p: PChar;
... p := PChar(s[2]); s := p; |
Re: erstes zeichen in einem edit löschen
Delphi-Quellcode:
var
s: String; i: Integer; begin s := Edit1.Text; Edit1.Clear; for i := 2 to Length(s) do begin Edit1.Text := Edit1.Text + s[i]; end; end; |
Re: erstes zeichen in einem edit löschen
Wieso einfach, wenns auch umständlich geht? :wink:
|
Re: erstes zeichen in einem edit löschen
vielleicht versteht er als "anfänger" dann aber die funktionsweise.
ne fertige funktion ist ja ganz toll, aber so hat er gleich ein paar mehr sachen verstanden. :zwinker: |
Re: erstes zeichen in einem edit löschen
Naja Copy ist ja auch nicht schwer zu verstehen ...
Copy(String, Begin, Länge): Kopiert Länge Zeichen von Begin ausgehend aus dem String "String" und gibt das Ergebniss zurück. Zumal man in der Methode noch weitere Variablen (mindestens mal die Zählervariable) deklarieren müsste und eine Schleife auch schneller unübersichtlich wird als eine Funktion. Florian |
Re: erstes zeichen in einem edit löschen
ich hab nicht gemeint das copy() schwer zu verstehen ist, aber er versteht so nicht die generelle funktionsweise. wenn er das selber macht, muss er sich überlegen, wie das eigentlich funktionieren kann.
|
Re: erstes zeichen in einem edit löschen
Mhh okey ... dann weiß er es nun :mrgreen: Verwenden sollte er trotzdem Copy.
Florian |
Re: erstes zeichen in einem edit löschen
Delphi-Quellcode:
KA ob das schneller ist als copy.
var str: String;
begin str:=edit1.text; delete(str, 1, 1); edit1.text:=str; end; |
Re: erstes zeichen in einem edit löschen
Zumindest muss man noch eine lokale Variable deklarieren ... kann aber sein, dass es schneller ist, wobei es bei sowas denke ich nicht auf ein paar Milisekunden ankommt.
Florian |
Re: erstes zeichen in einem edit löschen
Kann mir gut vorstellen, dass der Compiler die lokale Variable wegrationalisiert und dafür die temporäre Kopie des Strings auf dem Stack hernimmt.
|
Re: erstes zeichen in einem edit löschen
Wahrscheinlich ist das so, wobei der Quelltext aber trotzdem unübersichtlicher wird ...
|
Re: erstes zeichen in einem edit löschen
danke, hat alles funktioniert, ich hab ich aber auf das erste beschränkt, das is übersichtlicher^^ :) .
|
Re: erstes zeichen in einem edit löschen
Trotzdem - hier noch eine Alternative, die ohne eine zusätzliche String-Variable auskommt:
Delphi-Quellcode:
Und macht euch nicht soviel Gedanken um performance. Erst muss man verständlichen Code schreiben. Tuning kommt erst viel später. Und wenn ihr euren Code gut geschrieben habt, dann macht im wirklichen Leben (Job) das Tuning jemand anderes.
begin
with DemoEdit do begin SelStart := 1; SelLength := Length(Text); Text := SelText; end; end; Grüße vom marabu |
Re: erstes zeichen in einem edit löschen
Bist du dir da sicher?
edit1.seltext holt den kompletten String auf den Stack und das gleiche passiert mit der Stringvariable aus meinem Beispiel auch. Nur bei dir ist noch mehr Gedöns drum rum. Das dürfte daher langsamer sein. Also wenns um übersichtlichkeit geht, würde ich auf jeden Fall copy() bevorzugen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 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