Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Führende Null entfernen (https://www.delphipraxis.net/92577-fuehrende-null-entfernen.html)

MarquiseDeSade 22. Mai 2007 15:16


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:
edit1.text:=IntToStr(StrToInt(edit1.text) div 10);
    if StrToInt(edit1.text)=0 then
      edit1.text:='';
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:

gruß tobias

mkinzler 22. Mai 2007 15:20

Re: Führende Null entfernen
 
-String in Zahl wandeln
-manuell

Die Muhkuh 22. Mai 2007 15:27

Re: Führende Null entfernen
 
Hi,

Delphi-Quellcode:
function DeleteZero(aStr: String): String;
begin
  if aStr[1] = '0' then
    Delete(aStr, 1, 1);

  Result := aStr;
end;
Sowas?

willnix 22. Mai 2007 15:28

Re: Führende Null entfernen
 
Zitat:

Zitat von MarquiseDeSade
...
Dies habe ich so gelöst:

Delphi-Quellcode:
edit1.text:=IntToStr(StrToInt(edit1.text) div 10);
    if StrToInt(edit1.text)=0 then
      edit1.text:='';
...

Warum nicht einfach so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  EditTemp: String;
begin
  EditTemp := Edit1.Text;
  Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text));
  Edit1.Text := EditTemp;
end;
Dann ergibt sich das Problem gar nicht.
Willnix

Schaedel 22. Mai 2007 15:28

Re: Führende Null entfernen
 
Delphi-Quellcode:
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;
Suchst du sowas?

MarquiseDeSade 22. Mai 2007 15:37

Re: Führende Null entfernen
 
Danke für die vielen Antworten....

Ich habe mich für die Variante von willnix entschieden...


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  EditTemp: String;
begin
  EditTemp := Edit1.Text;
  Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text));
  Edit1.Text := EditTemp;
end;
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 ?

Dankeschön.... :stupid:

willnix 22. Mai 2007 16:01

Re: Führende Null entfernen
 
Ok, also...
Delphi-Quellcode:
  Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text));
Lenght Gibt die Länge des Strings zurück. Also wenn 2,34 im Edit steht, ist der Wert von "Length(Edit1.Text)" 4.
So, und Delete löscht Zeichen aus einem String.
Und zwar wie folgt:
Delphi-Quellcode:
 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)
Wenn die länge des Strings jetzt 4 ist, dann ist die Position der letzten Ziffer auch 4 also lösche ich mit:
Delphi-Quellcode:
  Delete(EditTemp, Length(Edit1.Text), Length(Edit1.Text));
das letzte Zeichen aus dem String EditTemp.
Delphi-Quellcode:
  Delete(EditTemp, Length(Edit1.Text-1), Length(Edit1.Text-1));
Würde z.B die vorletzte Ziffer aus EditTemp löschen.
oder mit
Delphi-Quellcode:
  Delete(EditTemp, 1, 3);
Alles von der ersten bis zur 3. Position.
Ich hoffe das war verständlich
Willnix

MarquiseDeSade 22. Mai 2007 16:40

Re: Führende Null entfernen
 
:hello:

Sehr ausführlich erklärt. Vielen Dank dafür. Habe es verstanden :dp:

willnix 22. Mai 2007 17:45

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:
Delete(EditTemp, Length(Edit1.Text), 1);
Dann löscht er von Length(Edit1.Text) aus 1 Zeichen.
Hier ist das egal weil es eh das letzte Zichen ist aber sonst... :wall:
Willnix

mkinzler 22. Mai 2007 17:56

Re: Führende Null entfernen
 
Und was passiert, wen es keine führende Null gibt? Dann wird die erste Zahl abgeschnitten.


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

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