Hey, folgender Code multipliziert zwei Integer.
Ich weiß, dass das auch einfacher geht, aber der Code soll später in Assembler umgesetzt werden.
Die Funktionsweise hat nichts mit meinem Problem zu tun:
Das showmessage in Zeile 3 gibt mir immer "1243032" aus.
In anbetracht der Tatsache, dass Integer normalerweise mit "0" initialisiert werden, hat mich das sehr verwundert und
ich habe ewig gebraucht darauf zu kommen, dass ich h2 erst auf "0" setzen muss.
Warum hat h2 nicht von Beginn an den Wert "0"?
Delphi-Quellcode:
function multi(w1,w2:integer):integer;
var h1, h2:integer;
begin
showmessage(inttostr(h2));
h2:=0;
repeat
h1:= w1
mod 2;
if h1 <> 0
then
begin
h2:=h2+w2;
dec(w1);
end
else
begin
w1:=w1
div 2;
w2:=w2 * 2;
end;
until w1=1;
result:=w2+h2;
end;
procedure TForm1.buttonclick(Sender: TObject);
begin
edit3.text:=inttostr(multi(strtoint(edit1.text),strtoint(edit2.text)));
end;