Löschversuch funktioniert nicht
Ich bin gerade dabei nen einfachen Windows Taschenrechner zu programmieren jetzt habe ich u.a. einen Button dafür eingerichtet das man die letzte zahl löschen kann
,also z.B. Ich gebe ne 12 ein drück den Button und dann steht dann da nur noch eine 1. edit1.Text:=edit1.Text - ' '; Ich habe versucht mir diesen befehl herzuleiten leider ohne erfolg wie man sehen kann. Jetzt kann ich nur auf euer wissen hoffen danke im Vorraus ! :D |
AW: Löschversuch funktioniert nicht
Zitat:
Delphi-Quellcode:
Wenn das klappt mach
SetLength(Edit1.Text, Length(Edit1.Text)-1);
Delphi-Quellcode:
If Length(Edit1.Text) > 0 then SetLength(Edit1.Text, Length(Edit1.Text)-1);
Ps: das ist nur hier im DP edit geraten/entstanden, also ungetestet. |
AW: Löschversuch funktioniert nicht
Bei mir kommt da eine Fehlermeldung nämlich "Konstantenobjekt kann nicht als Var-Parameter weiter gegeben werden".
|
AW: Löschversuch funktioniert nicht
Wie schauts mit einem
Delphi-Quellcode:
aus? Das müsste klappen.
Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text)-1);
|
AW: Löschversuch funktioniert nicht
Besten Dank funktioniert Super !:thumb:
|
AW: Löschversuch funktioniert nicht
Gern geschehen, mach es dann aber bitte so:
Delphi-Quellcode:
:wink:
if Length(Edit1.Text) > 0 then Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text)-1);
|
AW: Löschversuch funktioniert nicht
Ps: Nur so Nebenbei, Du könntest Dir auch eine Redo Funktion dazu einbauen, also das wenn jemand "lösch letzte Zahl" klickt es auch wieder Rückgängig machen kann, für mehrere Werte müsste man sich nur ein kleines Array einrichten worüber man Werte speichert/zurückholt. Wiegesagt, nur so Nebenbei erwähnt falls Du noch Ideen brauchst :-D
|
AW: Löschversuch funktioniert nicht
Zitat:
|
AW: Löschversuch funktioniert nicht
Zitat:
edit Ja ne, Du hast ja Recht @blawen, er schreibt ja das er Tippt. Mein Fehler, tut mir Leid! |
AW: Löschversuch funktioniert nicht
Eine weitere Möglichkeit wäre:
Delphi-Quellcode:
Gruß
var
mytext : string; begin mytext:=self.Edit1.Text; delete(mytext,length(mytext),1); // letztes Zeichen löschen self.Edit1.Text:=mytext; end; K-H |
AW: Löschversuch funktioniert nicht
Zitat:
Delphi-Quellcode:
Sollte das gleiche ergeben, ungetestet.
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; |
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 => LeftStr :angle: |
AW: Löschversuch funktioniert nicht
Da der TE ein Zeichen löschen möchte dachte ich, da
Delphi-Quellcode:
ganz gut passen würde.
delete
Daß ein
Delphi-Quellcode:
das performantere
copy
Delphi-Quellcode:
bei der Verarbeitung von mehreren tausenden Sätzen ist, sollte sich inzwischen herumgesprochen haben.
delete
Gruß K-H QHimitsu Seit wann gibt es das denn`? Ich dachte das wäre typisch Basic. |
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. |
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:
|
AW: Löschversuch funktioniert nicht
Zitat:
|
AW: Löschversuch funktioniert nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr. |
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