Registriert seit: 31. Mai 2009
1.198 Beiträge
Turbo Delphi für Win32
|
AW: Umrechnen von Zahlensystemen
28. Aug 2011, 16:42
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var n, result, y: Integer;
x, s1, s2, s3, s4: String;
begin
x:=(edit1.Text);
n:=Length(x);
if n=1 then
begin
y:=StrToInt(edit1.Text);
result:=y*1;
edit2.Text:=IntToStr(result);
end;
if n=2 then
begin
s1:=copy(x,2,2);
s2:=copy(x,1,1);
result:= StrToInt(s1)*1 + StrToInt(s2)*2;
edit2.Text:=IntToStr(result);
end;
if n=3 then
begin
s1:=copy(x,3,3);
s2:=copy(x,2,2);
s3:=copy(x,1,1);
result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4;
edit2.text:=IntToStr(result);
end;
if n=4 then
begin
s1:=copy(x,4,4);
s2:=copy(x,3,3);
s3:=copy(x,2,2);
s4:=copy(x,1,1);
result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4 + StrToInt(s4)*8;
edit2.Text:=IntToStr(result);
end;
if n>4 then
begin
showmessage('Es können nur Zahlen mit max 4 Stellenumgerechnet werden.');
end;
end;
Ich sehe da nirgendswo ein "copy" oder was auch immer... keine Zuweisung die etwas mit s1, ..., s4 zu tun hätte (Zuweisung ist ":=").
Weiters
Delphi-Quellcode:
var
binStr : String;
binVal : Integer;
decVal : Integer;
i : Integer;
begin
binStr := edit1.Text; // weise binStr den Inhalt von edit1.Text
decVal := 0; // initialisiere ein paar Werte
binVal := 1;
for i := Length(binStr) downto 1 do // gehe alle Elemente rückwärts durch -> richtige Reihenfolge
begin
if binStr[i] = '1' then // wenn das Element an der Stelle i = 1 ist, dann
decVal := decVal + binVal; // addiere dem dezimalen Wert den binären Zählwert hinzu
binVal := binVal * 2; // aktualisiere den binären Zählwert!
end;
edit2.Text := IntToStr(decVal);
end;
Wenn du die Syntax einmal gerafft hast und die Logik dahinter immernoch nicht, dann führe einen Schreibtischtest durch - dh. gehe alles manuell per Hand auf Blatt Papier Schritt für Schritt durch!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
|
|
Zitat
|