Hallo inst666,
erstens musst du nicht jedes Mal die Komplette
Unit posten, die relevante Prozedur/Funktion reicht eigentlich aus.
Nun zu deinem ersten Code:
Delphi-Quellcode:
procedure TZeichen.Button1Click(Sender: TObject);
var zeichen, fehler :integer;
ok :boolean;
begin
val ( ein.text, zeichen, fehler ) ;
ok := (fehler=0) ;
if ok then
begin
case zeichen of
A..Z : ausgabe := 'Buchstabe' ;
a..z : ausgabe := 'Kleinbuchstabe';
1..10 : ausgabe := 'Zahl' ;
'§','$','%' : ausgabe := 'Sonderzeichen';
end;
aus.Text := ausgabe ;
end;
end;
Du versuchst hier, den Text der im Edit "ein" eingegeben wurde, in eine Zahl umzuwandeln. Nachdem du aber auch mit der Eingabe von Buchstaben rechnest, wird fehler jedes Mal ungleich 0 sein.
Es geht aber viel einfacher:
Delphi-Quellcode:
procedure TZeichen.Button1Click(Sender: TObject);
var
ausgabe: String;
begin
if Length(ein.Text) = 0 then //Wenn kein Text eingegeben wurde, geben wir eine Fehlermeldung aus
ausgabe := 'Kein Text eingegeben!'
else //sonst sehen wir nach was los ist
begin
case ein.Text[1] of //im Moment interessiert uns nur das erste Zeichen
'A'..'Z': ausgabe := 'Grossbuchstabe';
'a'..'z': ausgabe := 'Kleinbuchstabe';
'0'..'9': ausgabe := 'Ziffer';
else
ausgabe := 'Sonderzeichen';
end;
end;
ShowMessage(ausgabe); //wir geben den Text aus
end;
In der Case-Abfrage fragen wir ab, ob es sich um einen Grossbuchstaben, einen Kleinbuchstaben oder eine Ziffer handelt. Dabei darf zwischen den Hochkommas immer nur ein Zeichen vorkommen. Der else-Zweig tritt ein, falls keine der vorherigen Bedingungen wahr sind. Wir nehmen in dem Fall an, dass es sich um ein Sonderzeichen handelt. Ich hoffe der Code verdeutlicht die Verwendung von case ein bisschen..
Greetz
alcaeus