![]() |
String in Zahlen und Zeichen zerlegen
Hallo,
ich hab einen beliebeigen String aus einer Zahl und einem möglichen nachgestelltem Buchstaben, der jeweils in eine Zahl und dem einzelnen nachfolgenden Zeichen zerlegt werden soll. Das letzte Zeichen im String ist nicht immer vorhanden. d.h. dann steht eben nur eine Zahl im String. Beispiele: '123a' ERGEBNIS: Zahl 123 aus String filtern und jeweils den Zahlenteil in eine Integer-Variable und das 'a' in eine Char-Variable. '7b' Ergebnis - 7 | b '1002c' Ergebnis 1002 | c '6632x' Ergebnis 6632 | x '1224' Ergebnis 1224 Wie löst man das am schnellsten. Kann mir da jemand helfen? |
Re: String in Zahlen und Zeichen zerlegen
Hallo !
Möglichkeiten wäre mit 'val' eine versuchsweise Umwandlung in eine Zahl, oder mit ord(LetztesZeichen) das letzte Zeichen zu prüfen. mfg Ferber |
Re: String in Zahlen und Zeichen zerlegen
ungetestet!
Delphi-Quellcode:
if StrToIntDef(RightStr(s,1),99) = 99 then
begin // Letztes Zeichen ist ein Buchstabe c := RightStr(s,1)[1]; i := strtoint(LeftStr(s,lenght(s)-1)); end else begin i := strtoint(s) c := #13; // Default end; |
Re: String in Zahlen und Zeichen zerlegen
Danke, funktioniert schon ganz gut, hab nur die Schreibfehler ausgesbessert.
Delphi-Quellcode:
Dann soll der Benutzer entweder nur eine Zahl oder eine Zahl gefolgt von einem Buchstaben in das Edit-Feld eingeben können.
procedure TForm1.Button1Click(Sender: TObject);
var i : integer; c : Char; s : string; begin s := Edit1.Text; if StrToIntDef(RightStr(s,1),99) = 99 then begin // Letztes Zeichen ist ein Buchstabe c := RightStr(s,1)[1]; i := strtoint(LeftStr(s,length(s)-1)); end else begin i := strtoint(s); c := #13; // Default end; ShowMessage('i= '+IntToStr(i)+', c= '+c); // nur zur Anzeige end; Beispiel: 123a 1003f 245 Wie kann ich dann Fehleingaben abfangen? |
Re: String in Zahlen und Zeichen zerlegen
Ich wollte noch ergänzen nur Kleinbuchstaben !!!
In der Art .. if c in ['a'..'z'] then .. oder so ähnlich. |
Re: String in Zahlen und Zeichen zerlegen
Hallo,
eine kleine Anregung - im Sinne von Beitrag #2:
Delphi-Quellcode:
Grüße vom marabu
function IsValidKey(s: String): Boolean;
var number, index: Integer; begin Val(s, number, index); Result := (index = 0) or (s = '') or ( (index > 1) and (s[index] in ['a'..'z']) and (index = Length(s)) ); end; procedure TDemoForm.EditChange(Sender: TObject); begin with Sender as TEdit do if IsValidKey(Text) then Color := clWhite else Color := clYellow; end; |
Re: String in Zahlen und Zeichen zerlegen
:thumb:
Saubere Lösung, echt klasse ! Problem ist gelöst. Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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