Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Binärrechner (https://www.delphipraxis.net/50000-problem-mit-binaerrechner.html)

Metatron220 19. Jul 2005 14:49


Problem mit Binärrechner
 
Ich möchte einen Rechner schreiben, der eine beliebige Zahl in Binärcode umwandelt. Folgenden Code habe ich geschrieben:
Delphi-Quellcode:
var x,y,z, r: integer;
begin
  edit2.Text:='';
  z:=2;
  x:=StrToInt(edit1.Text);
  r:=x;
  if x=1 then edit2.Text:=edit2.text+'1'
  else
  if x=0 then edit2.Text:=edit2.text+'0'
  else
  begin
  repeat
  z:=2;
     repeat
        y:=r div z;
        z:=z*2;
     until y=1;
     edit2.Text:=edit2.text+'1';
     r:=r mod z;
  until r=0;
  while z>2 do
  begin
    z:=z div 2;
    edit2.text:=edit2.text+'0';
  end;
  end;
end;
Edit1 ist das Editfeld in dem die umzurechnende Zahl steht, Edit2 ist das Feld in dem der Binärcode ausgegeben wird.

Jedoch bleibt das Programm immer hängen (ich nehme an es wiederholt eine Schleife unendlich oft) Hat jemand eine Ahnung was an dem Code falsch ist?

schon mal vielen dank im vorraus

Alexander Roth 19. Jul 2005 14:58

Re: Problem mit Binärrechner
 
Kann es sein das x von vornerein 0 ist, dann kann y in der schleife nie 1 werden.
Ebenfalls kann es sein dass x 1 ist, dann wird ebenfalls nix draus.

Erklärung, r:=x; damit kann r 1 oder 0 sein
dann wird: y:=r div 2
dann kann y nie 1 werden


PS: Kapier deine Umwandlung ins Binärsystem nicht

cell 19. Jul 2005 15:03

Re: Problem mit Binärrechner
 
mach mal debuggen setz einen breakpoint und lass das programm laufen

DBR 19. Jul 2005 15:11

Re: Problem mit Binärrechner
 
Mach doch sowas:


Delphi-Quellcode:
function IntToBin(i: int64): string;
begin
  result := '';
  while i > 0 do begin
    result := inttostr(ord(odd(i))) + result;
    i := i shr 1;
  end;
  if result = '' then result := '0';
end;


procedure TForm1.Button7Click(Sender: TObject);
var x, y, z, r: integer;
begin
  edit2.Text := IntToBin(StrToIntDef(Edit1.Text, 0));
end;


Ist doch einfacher.
Gruß DBR

[edit=Admin]Delphi-Tags gesetzt. Künftig bitte selber machen. Danke ;-) Mfg, Daniel[/edit]

TeronG 19. Jul 2005 15:13

Re: Problem mit Binärrechner
 
Zitat:

Zitat von DBR
Mach doch sowas:

mach doch mal code-tags (heißen die so ??)

Zitat:

Zitat von DBR
Delphi-Quellcode:

function IntToBin(i: int64): string;
begin
  result := '';
  while i > 0 do begin
    result := inttostr(ord(odd(i))) + result;
    i := i shr 1;
  end;
  if result = '' then result := '0';
end;


procedure TForm1.Button7Click(Sender: TObject);
var x, y, z, r: integer;
begin
  edit2.Text := IntToBin(StrToIntDef(Edit1.Text, 0));
end;


Ist doch einfach. :mrgreen:

Alexander Roth 19. Jul 2005 15:14

Re: Problem mit Binärrechner
 
Das
Delphi-Quellcode:
 result := '';
am Anfang kannst du auch weglassen.

marabu 19. Jul 2005 15:17

Re: Problem mit Binärrechner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Auch ich würde eine saubere Trennung von GUI und Funktionen vorziehen. Meine Umwandlungsroutine und die von DBR unterscheiden sich aber geringfügig:

Delphi-Quellcode:
function CardToDual(c: Cardinal): string;
begin
  Result := '';
  repeat
    Result := Chr(Ord('0') + Ord(Odd(c))) + Result;
    c := c shr 1;
  until c = 0;
end;

procedure TMainForm.ConvertButtonClick();
begin
  BinaryEdit.Text := CardToDual(StrToInt(DecimalEdit.Text));
end;
Grüße vom marabu

barf00s 19. Jul 2005 15:20

Re: Problem mit Binärrechner
 
KarteZuDual? :P

wenn'd "CardinalToDual" schreibst siehts doch gleich schmucker aus </senf>

marabu 19. Jul 2005 15:36

Re: Problem mit Binärrechner
 
Hast Recht - schreibe gerade eine wrapper unit für SysUtils:

Delphi-Quellcode:
unit SysUtilsTheBarf00sWay;

interface
 
  function IntegerToString(i: integer): string;

implementation

uses
  SysUtils;

function IntegerToString(i: integer): string;
begin
  Result := IntToStr(i);
end;

end.
Magst du mir nicht ein wenig helfen?

Grüße nach Berlin
marabu

Metatron220 19. Jul 2005 18:35

Re: Problem mit Binärrechner
 
Vielen Dank für die Hilfe. Ich bin aber leider ein ziemlicher Anfänger un hab deshalb en paar Fragen. Leider kenne ich folgende Befehle nicht un wüsste gerne was sie bewirken:
Chr
Ord
Odd
Shr

Wär nett wenn mir da nochmal jemand helfen könnte. Vielen dank schon mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Seite 1 von 3  1 23      

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