AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hexadezimal in Binär

Ein Thema von Marcel2906 · begonnen am 18. Aug 2011 · letzter Beitrag vom 18. Aug 2011
Thema geschlossen
Marcel2906

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

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 12:49
ich hab mich auch mal an Hex to Dez gewagt.
Nun fehlt mir ein Befehl, falls es diesen überhaupt gibt.
Dort wo die Kommentare sind, fehlt mir der Befehl.
Ich wäre sehr dankbar für jeden Tipp

Code:
program HexToDez;

{$APPTYPE CONSOLE}

uses
  SysUtils;

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

repeat

writeln('Bitte Hexadezimalzahl eingeben:');
readln(h);
a:= 1;
// c:= Wert von h an Stelle [a]; <------------------hier
b:=c;

 while a < length(h) do
  begin
   a:=a+1;
 //c:=Wert.Stelle[a]   <-----------und das selbe nochmal hier

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

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

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

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

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

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

 b:=b*16+c
end;
writeln(b);
writeln('');
writeln('Beenden? [y]');
readln(y);
until y='y';
end.
 
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 12:51
Du hast es fast schon richtig stehen gehabt
"c := h[a];"
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#3

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 13:10
Und wenn man c nicht als String, sondern als Char deklariert, lässt sich sogar case verwenden.
Delphi-Quellcode:
var c: char;
...
c := Upcase(h[a]); //vorsichtshalber in Großschreibung wandeln
case c of
  'A': d := 10;
  'B': d := 11;
  //usw.
end;
Es geht natürlich auch noch kürzer und einfacher mit Ord(), aber ich lass das erstmal so stehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
 
gammatester

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

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 13:31
Wenn Du für das erste Zeichen keine Extrabehandlung einbaust, kann man alles in der Schleife machen, d.h. nur einmal die verschachtelte if-Anweisung bzw. case.

Man muß dann nur b vor der Schleife auf 0 setzen.
 
Marcel2906

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

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 14:08
ich hab es jetzt mal mit case versucht, aber nun klappt mein code nicht mehr.

Vorher:

Code:
program HexToDez;

{$APPTYPE CONSOLE}

uses
  SysUtils;

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

repeat

writeln('Bitte Hexadezimalzahl eingeben:');
readln(h);
a:= 1;
c:= 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:=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(b);
writeln('');
writeln('Beenden? [y]');
readln(y);
until y='y';
end.
Nachher:

Code:
program HexToDez1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  a,b,d: integer;
  h,y: string;
  c:char;
begin

repeat

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

case c of
'A': d := 10;
'B': d := 11;
'C': d := 12;
'D': d := 13;
'E': d := 14;
'F': d := 15;


end;

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


 while a < length(h) do
  begin

  a:=a+1;
  c:=h[a];

case c of
'A': d := 10;
'B': d := 11;
'C': d := 12;
'D': d := 13;
'E': d := 14;
'F': d := 15;
end;

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

end;
writeln(b);
writeln('');
writeln('Beenden? [y]');
readln(y);
until y='y';
end.

Habe Case noch nie benutzt
Was muss ich anders machen??
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#6

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 14:11
Delphi-Quellcode:
case c of
  'A', 'a': d := 10;
  'B', 'b': d := 11;
  'C', 'c': d := 12;
  'D', 'd': d := 13;
  'E'; 'e': d := 14;
  'F', 'f': d := 15;
  '0'..'9': d:=StrToInt(c);
  else
    //Fehler: ungültiges Zeichen, irgendwie behandeln
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
 
Marcel2906

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

AW: Hexadezimal in Binär

  Alt 18. Aug 2011, 14:25
aber fehlt nicht dieser ausdruck noch bei jedem fall von c:

Code:
c:=IntToStr(d);
nur leider geht das nicht
 
Thema geschlossen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:01 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 by Thomas Breitkreuz