![]() |
Führende Null entfernen
Hallo Delphianer :-D
Ich schreibe ja momentan an einem Taschenrechner, der über eine Rücktaste verfügt. Mit dieser Taste kann die letzte Zahl wieder entfernt werden. Beispiel: Eingabe über Zahlenbutton: 1232 nun drückt der User die Rücktaste und im Editfeld steht 123... Dies habe ich so gelöst:
Delphi-Quellcode:
Wenn nun div 10 die Null liefert, dann wird diese ja auch ins Editfeld geschrieben. Wenn der User über die Button nun neue Zahlen eingibt, steht dann da z.B. 0124.Gibt es einen Befehl wie z.B. Trim, der anstatt der Lehrzeichen die führende Null automatisch beseitigt, oder findet ihr meine Lösung für vertretbar? :roll:
edit1.text:=IntToStr(StrToInt(edit1.text) div 10);
if StrToInt(edit1.text)=0 then edit1.text:=''; gruß tobias |
Re: Führende Null entfernen
-String in Zahl wandeln
-manuell |
Re: Führende Null entfernen
Hi,
Delphi-Quellcode:
Sowas?
function DeleteZero(aStr: String): String;
begin if aStr[1] = '0' then Delete(aStr, 1, 1); Result := aStr; end; |
Re: Führende Null entfernen
Zitat:
Delphi-Quellcode:
Dann ergibt sich das Problem gar nicht.
procedure TForm1.Button1Click(Sender: TObject);
var EditTemp: String; begin EditTemp := Edit1.Text; Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text)); Edit1.Text := EditTemp; end; Willnix |
Re: Führende Null entfernen
Delphi-Quellcode:
Suchst du sowas?
function LoescheFuehrendeNullen(Text :String):string;
var i : integer; begin // wenn führende Nullen im Datensatz sind lösche diese for i := 1 to (length(text)-1) do begin if not (text[2]= ',') then begin if text[1] = '0' then begin text := copy(text,2,length(text)); end else begin break; end; break; end; end; result := text; end; |
Re: Führende Null entfernen
Danke für die vielen Antworten....
Ich habe mich für die Variante von willnix entschieden...
Delphi-Quellcode:
Denn damit lassen sie auch Zahlen behandeln, wie z.b. 23,6 :zwinker: und der Umfang ist im Rahmen. Könntest du mir nochmal erläutern, was ab delete passiert ? Was macht der Befehl length ?
procedure TForm1.Button1Click(Sender: TObject);
var EditTemp: String; begin EditTemp := Edit1.Text; Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text)); Edit1.Text := EditTemp; end; Dankeschön.... :stupid: |
Re: Führende Null entfernen
Ok, also...
Delphi-Quellcode:
Lenght Gibt die Länge des Strings zurück. Also wenn 2,34 im Edit steht, ist der Wert von "Length(Edit1.Text)" 4.
Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text));
So, und Delete löscht Zeichen aus einem String. Und zwar wie folgt:
Delphi-Quellcode:
Wenn die länge des Strings jetzt 4 ist, dann ist die Position der letzten Ziffer auch 4 also lösche ich mit:
Delete(Der String aus dem gelöscht werden soll, Die Position im String AB der gelöscht werden soll, Die Position BIS zu der gelöscht werden soll)
Delphi-Quellcode:
das letzte Zeichen aus dem String EditTemp.
Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text));
Delphi-Quellcode:
Würde z.B die vorletzte Ziffer aus EditTemp löschen.
Delete(EditTemp, Length(Edit1.Text-1), Length(Edit1.Text-1));
oder mit
Delphi-Quellcode:
Alles von der ersten bis zur 3. Position.
Delete(EditTemp, 1, 3);
Ich hoffe das war verständlich Willnix |
Re: Führende Null entfernen
:hello:
Sehr ausführlich erklärt. Vielen Dank dafür. Habe es verstanden :dp: |
Re: Führende Null entfernen
Ahhh!
Ich habe mich fürchterlich geirrt! Das funktioniert zwar alles so, ABER der 3. Parameter von Delete gibt nicht die Position an bis zu der gelöscht werden soll sondern wieveile Zeichen gelöscht werden sollen. Also muss es bei dir heißen:
Delphi-Quellcode:
Dann löscht er von Length(Edit1.Text) aus 1 Zeichen.
Delete(EditTemp, Length(Edit1.Text), 1);
Hier ist das egal weil es eh das letzte Zichen ist aber sonst... :wall: Willnix |
Re: Führende Null entfernen
Und was passiert, wen es keine führende Null gibt? Dann wird die erste Zahl abgeschnitten.
|
Re: Führende Null entfernen
Hallo :lol:
Also auch wenn es keine führende Null gibt, geht alles bestens. |
Re: Führende Null entfernen
@willnix:
Delphi-Quellcode:
Was soll das ergeben? Was subtrahiert er denn wie, wenn du eine Ziffer von einer Zeichnkette (String) abziehst? Das -1 gehört ausserhalb der Length() Klammern!
Edit1.Text-1
@MarquiseDeSade: Von wegen. Dein Code löscht so oder so Zeichen - du fragst doch nirgendwo ab, ob es eine führende Null gibt. @Threadersteller: Ich würde das ganze Problem anders anfangen. Du arbeitest hier mit Strings, aber warum? Eine führende Null bekommst du auch einfach anders weg: wandle den String in eine Fliesskommazahl um und dann zurück in eine Fliesskommazahl. Dabei werden eventuelle führende Nullen wie auch Exponenten (bei Bedarf, siehe Umwandlungen) entfernt bzw. ausgeschrieben. |
Re: Führende Null entfernen
Hallo,
ich würde führende Nullen wie folgt löschen
Delphi-Quellcode:
While str[1]='0' do
Delete(Str,1,1); |
Re: Führende Null entfernen
Also um hier mal ein paar Missverständnisse aufzuklären:
Das hier: Edit1.Text-1 War ein Tippfehler, OK. Und was hier irgendwie untergeht mein Code, löscht kein vorangestellte Null. Die vorangestellte Null ist entstanden weil der Threadersteller um die letze Ziffer in einem Edit zu löschen folgenden Code verwendt hat:
Delphi-Quellcode:
Ich habe ihm diesen als alternaive gegeben bei der gar keine Null entsteht:
edit1.text:=IntToStr(StrToInt(edit1.text) div 10);
if StrToInt(edit1.text)=0 then edit1.text:='';
Delphi-Quellcode:
Mein Code löscht also keine vorangestellte Null sondern umgeht deren Entstehung beim löschen der letzten Ziffer eines Edits.
procedure TForm1.Button1Click(Sender: TObject);
var EditTemp: String; begin EditTemp := Edit1.Text; Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text)); Edit1.Text := EditTemp; end; Willnix |
Re: Führende Null entfernen
Zitat:
gruß tobias |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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