Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#27

Re: Isalpha, IsNum, IsNumeric als eine Function

  Alt 4. Apr 2009, 16:14
So - jetzt dann jetzt meine vorläufige Endversion:

In meinem D2006 compiliert es

Arbeitet mit Sets

Kein goto

case-Statement statt "else if"

Einfach elegant

Delphi-Quellcode:
program test;
{$APPTYPE CONSOLE}

// Dies ist unser ErgebnisTyp:
type TCharTyp = (Ziffer, Zeichen, Andere);
type TStringTyp = set of TCharTyp;


function CheckStr(Str:string):TStringTyp;
var
   i: Integer;
begin
   Result := [];
   
   for i:= 1 to Length(Str) do
   begin
      case Str[i] of
         '0'..'9': Include(Result, Ziffer);
         'a'..'z', 'A'..'Z': Include(Result, Zeichen);
      else
         Include(Result, Andere);
      end;

      if Result = [Ziffer, Zeichen, Andere] then
         break;
   end;
end;

begin
//Zum Testen:
Writeln(Ord(checkstr('') = []));
readln;
Writeln(Ord(Ziffer in checkstr('190')));
readln;
writeln(Ord(Zeichen in checkstr('az')));
readln;
Writeln(Ord([Zeichen, Ziffer] = checkstr('az10')));
readln;
Writeln(Ord([Zeichen, Ziffer] <= checkstr('az10 !?.,;:-_<>')));
readln;

// Es sollte überall 1 rauskommen ;-)

//Zum Testen:
Writeln(Ord(Zeichen in checkstr('190')));
readln;
writeln(Ord(Ziffer in checkstr('az')));
readln;
Writeln(Ord([Zeichen, Andere] = checkstr('az10')));
readln;
Writeln(Ord([Zeichen, Ziffer] >= checkstr('az10 !?.,;:-_<>')));
readln;

// Es sollte überall 0 rauskommen ;-)

end.
  Mit Zitat antworten Zitat