Einzelnen Beitrag anzeigen

Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Code erweitern

  Alt 19. Aug 2011, 08:36
Ich hab es jetzt mal Versucht, aber ich habe vorher noch nie mit 'procedure' gearbeitet, deswegen klappt es auch wahrscheinlich nicht. Hier mein Code:

Code:
program HexToDez;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type

procedure EingabeEinlesenUndPruefen(Sender: HexToDez)
procedure WandleHexInDez(Sender: HexToDez);

var
y: string;

begin
 repeat
  EingabeEinlesenUndPruefen;
  writeln('Beenden? [y]');
  readln(y);
 until y='y';
end;

procedure EingabeEinlesenUndPruefen;
 var
  erfolgreich: Boolean;
  eingabe: string;
  i: Integer;

begin
erfolgreich := True;
 repeat
  writeln('Bitte Hexadezimalzahl eingeben:');
  readln(eingabe);
   for i := 1 to Length(eingabe) do
    begin
     if not (AnsiChar(eingabe[i]) in ['0'..'9','A'..'F','a'..'f']) then
      begin
       Writeln('Fehlerhafte Eingabe!');
       erfolgreich := False;
       Break;
      end;
     end;
 until erfolgreich;
WandleHexInDez(eingabe);
end;

procedure WandleHexInDez;
var
a,b,d: integer;
h,c,y: string;

begin
 writeln('Bitte Hexadezimalzahl eingeben:');
 readln(h);
 a:= 1;
 c:= Upcase(h[a]);

 if c='A' then
  begin
   d:=10;
   c:=IntToStr(d);
  end;

 if c='B' then
  begin
   d:=11;
   c:=IntToStr(d);
  end;

 if c='C' then
  begin
   d:=12;
   c:=IntToStr(d);
  end;

 if c='D' then
  begin
   d:=13;
   c:=IntToStr(d);
  end;

  if c='E' then
   begin
    d:=14;
    c:=IntToStr(d);
   end;

 if c='F' then
  begin
   d:=15;
   c:=IntToStr(d);
  end;

 d:=StrToInt(c);
 b:=d;

 while a < length(h) do
  begin
   a:=a+1;
   c:=upcase(h[a]);

  if c='A' then
   begin
    d:=10;
    c:=IntToStr(d);
   end;

  if c='B' then
   begin
    d:=11;
    c:=IntToStr(d);
   end;

  if c='C' then
   begin
    d:=12;
    c:=IntToStr(d);
   end;

  if c='D' then
   begin
    d:=13;
    c:=IntToStr(d);
   end;

  if c='E' then
   begin
    d:=14;
    c:=IntToStr(d);
   end;

  if c='F' then
   begin
    d:=15;
    c:=IntToStr(d);
   end;

   d:=StrToInt(c);
   b:=b*16+d;
  end;

writeln('');
writeln('Zahl im Dezimalsystem:');
writeln(b);
writeln('');
end;
end.
  Mit Zitat antworten Zitat