Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi erstes zeichen in einem edit löschen (https://www.delphipraxis.net/77745-erstes-zeichen-einem-edit-loeschen.html)

guitar1 24. Sep 2006 12:26


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 .

Zacherl 24. Sep 2006 12:28

Re: erstes zeichen in einem edit löschen
 
Hi,

Delphi-Quellcode:
Edit1.Text := Copy(Edit1.Text, 2, length(Edit1.Text);
Florian

mkinzler 24. Sep 2006 12:29

Re: erstes zeichen in einem edit löschen
 
Delphi-Quellcode:
p: PChar;
...
p := PChar(s[2]);
s := p;

fwsp 24. Sep 2006 12:30

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;

Zacherl 24. Sep 2006 12:30

Re: erstes zeichen in einem edit löschen
 
Wieso einfach, wenns auch umständlich geht? :wink:

fwsp 24. Sep 2006 12:33

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:

Zacherl 24. Sep 2006 12:35

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

fwsp 24. Sep 2006 12:37

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.

Zacherl 24. Sep 2006 12:40

Re: erstes zeichen in einem edit löschen
 
Mhh okey ... dann weiß er es nun :mrgreen: Verwenden sollte er trotzdem Copy.

Florian

3_of_8 24. Sep 2006 12:57

Re: erstes zeichen in einem edit löschen
 
Delphi-Quellcode:
var str: String;
begin
str:=edit1.text;
delete(str, 1, 1);
edit1.text:=str;
end;
KA ob das schneller ist als copy.

Zacherl 24. Sep 2006 13:21

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

3_of_8 24. Sep 2006 13:31

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.

Zacherl 24. Sep 2006 13:49

Re: erstes zeichen in einem edit löschen
 
Wahrscheinlich ist das so, wobei der Quelltext aber trotzdem unübersichtlicher wird ...

guitar1 24. Sep 2006 14:21

Re: erstes zeichen in einem edit löschen
 
danke, hat alles funktioniert, ich hab ich aber auf das erste beschränkt, das is übersichtlicher^^ :) .

marabu 24. Sep 2006 15:01

Re: erstes zeichen in einem edit löschen
 
Trotzdem - hier noch eine Alternative, die ohne eine zusätzliche String-Variable auskommt:

Delphi-Quellcode:
begin
  with DemoEdit do
  begin
    SelStart := 1;
    SelLength := Length(Text);
    Text := SelText;
  end;
end;
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.

Grüße vom marabu

3_of_8 24. Sep 2006 15:15

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