![]() |
Umrechner, kleines Problem
Hallo, möchte ein Programm schreiben bei dem ich Dezimal und Dual gegenseitig umwandeln kann.
In die eine richtung habe ich es hinbekommen. Von Dual in Dezimal habe ich ein Strucktogramm gefunden und es danach programmiert, bekomme als Ergebniss jedoch immer 0. Hier mein Quelltext:
Code:
Wenn einer meinen Fehler entdeckt, würde ich mich freuen.
procedure TForm1.Button1Click(Sender: TObject);
var dez;faktor,i:integer; duz:string; begin edit1.Text:=duz; dez:=0; faktor:=1; begin for i:=length(duz) downto 1 do dez:=dez+faktor*strtoint(duz[i]); faktor:=faktor*2; end; edit2.Text:=inttostr(dez); end; |
AW: Umrechner, kleines Problem
Schau mal genau, wo Du begin und end gesetzt hast. Bei entsprechender Einrückung sieht man das auf den ersten Blick.
|
AW: Umrechner, kleines Problem
ok, habe das zweite begin jetzt erst nach der schleife gesetzt. Mir wird jedoch immer noch als endergebnis die Zahl 0 ausgegebe :(
ich versteh es nicht :/ |
AW: Umrechner, kleines Problem
. vielleicht
Delphi-Quellcode:
nach
edit1.Text:=duz;
Delphi-Quellcode:
ändern.
duz:=edit1.Text;
Grüße Klaus |
AW: Umrechner, kleines Problem
Falsche Zuweisung am Anfang, so klappt es:
Delphi-Quellcode:
Ich würde das aber allgemeingültiger gestalten, z.B. so:
procedure TForm1.Button1Click(Sender: TObject);
var dez, faktor, i: integer; duz: string; begin //Edit1.Text := duz; duz := Edit1.Text; dez := 0; faktor := 1; for i := Length(duz) downto 1 do begin dez := dez + faktor * strtoint(duz[i]); faktor := faktor * 2; end; Edit2.Text := inttostr(dez); end;
Delphi-Quellcode:
function BinaryToInt(const BinaryStr: string): integer;
const BITSPERBYTE = 8; var i, faktor, MaxDigits: integer; begin MaxDigits := SizeOf(Result) * BITSPERBYTE; if Length(BinaryStr) > MaxDigits then raise Exception.CreateFmt('Eingabe zu lang, maximal %d Zeichen erlaubt', [MaxDigits]); Result := 0; faktor := 1; for i := Length(BinaryStr) downto 1 do begin case BinaryStr[i] of '0': ; //Keine Änderung, daher keine Aktion nötig '1': Result := Result or faktor; else raise Exception.Create('Ungültige Eingabe, nur 0 und 1 erlaubt.'); end; faktor := faktor shl 1; end; end; |
AW: Umrechner, kleines Problem
super es läuft jetzt. vielen dank :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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