AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String in Zahlen und Zeichen zerlegen

Ein Thema von needatip · begonnen am 22. Feb 2007 · letzter Beitrag vom 22. Feb 2007
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 09:55
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?
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#2

Re: String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 10:01
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
Otto
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#3

Re: String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 10:25
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;
Jörg
have FUN
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 10:57
Danke, funktioniert schon ganz gut, hab nur die Schreibfehler ausgesbessert.

Delphi-Quellcode:
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;
Dann soll der Benutzer entweder nur eine Zahl oder eine Zahl gefolgt von einem Buchstaben in das Edit-Feld eingeben können.
Beispiel:
123a
1003f
245
Wie kann ich dann Fehleingaben abfangen?
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 10:59
Ich wollte noch ergänzen nur Kleinbuchstaben !!!

In der Art .. if c in ['a'..'z'] then ..
oder so ähnlich.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 14:31
Hallo,

eine kleine Anregung - im Sinne von Beitrag #2:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: String in Zahlen und Zeichen zerlegen

  Alt 22. Feb 2007, 15:42

Saubere Lösung, echt klasse !

Problem ist gelöst.
Danke.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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