AGB  ·  Datenschutz  ·  Impressum  







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

Hex to Bin -> Falsche eingabe

Ein Thema von Marcel2906 · begonnen am 19. Aug 2011 · letzter Beitrag vom 19. Aug 2011
Antwort Antwort
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#1

AW: Code erweitern

  Alt 19. Aug 2011, 08:13
Deine erfolgreich -Logik ist falsch; es sei denn, Du betrachtest aus unerfindlichen Gründen einen Leerstring als gültige Hexzahl.
  Mit Zitat antworten Zitat
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Code erweitern

  Alt 19. Aug 2011, 08:44
Ok den Fall einer leeren Eingabe sollte man natürlich noch behandeln.
Und die Initialisierung von "erfolgreich" gehört natürlich in die Schleife, sonst wird nach einer falschen Eingabe keine andere Eingabe mehr als richtig betrachtet.

Delphi-Quellcode:
..
repeat
  erfolgreich := True;
  writeln('Bitte Hexadezimalzahl eingeben:');
  readln(eingabe);
  if not length(eingabe) >= 1 then
    erfolgreich := False;
..
  Mit Zitat antworten Zitat
Marcel2906

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

AW: Code erweitern

  Alt 19. Aug 2011, 08:58
Ich habe mein code nochmals überarbeitet.
Nun bekomme ich die Fehlermeldung:

Zitat:
[DCC Fehler] HexToDez.dpr(46): E2034 Zu viele Parameter
zu folgendem abschnitt:

Code:
begin
 repeat
  erfolgreich := True;
  writeln('Bitte Hexadezimalzahl eingeben:');
  readln(h);
   if not length(h) >= 1 then
    erfolgreich := False;

   for i := 1 to Length(h) do
    begin
     if not (AnsiChar(h[i]) in ['0'..'9','A'..'F','a'..'f']) then
      begin
       Writeln('Fehlerhafte Eingabe!');
       erfolgreich := False;
       Break;
      end;
     end;
 until erfolgreich;
WandleHexInDez(h);        //<------hier
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Code erweitern

  Alt 19. Aug 2011, 09:06
Du solltest den Code ein wenig auftrennen, dann wird alles auch nicht so wuselig.

Hier mal eine Vorlage, wo du die Prüfung und Wandlung noch ausformulieren musst:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

procedure Eingabe( var EingabeText : string );
begin

  if EingabeText <> ''
  then
    begin

      Writeln( 'Fehler: ' + EingabeText + ' ist keine Hexadezimalzahl!' );
      Writeln;

    end;

  Writeln( 'Bitte Hexadezimalzahl eingeben:' );
  ReadLn( EingabeText );

end;

function IstHexZahl( const EingabeText : string ) : Boolean;
begin

  // Hier muss noch der Code für die Prüfung rein

  Result := True;
end;

function HexZahlNachInteger( const HexZahl : string ) : Integer;
begin

  // Hier muss noch der Code für die Umwandlung rein

  Result := 0;
end;

procedure Ausgabe( const HexZahl : string; Zahl : Integer );
begin

  Writeln( 'Hex ' + HexZahl + ' ist dezimal ' + IntToStr( Zahl ) );

end;

var
  EingabeText : string;
  Zahl : Integer;

begin
  try

    EingabeText := '';

    // Eingabe

    repeat

      Eingabe( EingabeText );

    until IstHexZahl( EingabeText ) or ( EingabeText = '' );

    if EingabeText <> ''
    then
      begin

        // Verarbeitung

        Zahl := HexZahlNachInteger( EingabeText );

        // Ausgabe

        Ausgabe( EingabeText, Zahl );

      end;

  except
    on E : Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 04:57 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