Das Memo is kein Dynamisches...Wurde zur Designzeit aufs Formular gesetzt...
Die
AV entsteht bei Memo1.Lines.Add(..)
Also meine function funktioniert...irgendwie.....ohne Memo......
Ach ich poste sie einfach mal...
Delphi-Quellcode:
function MLength(I: TIntArray): Integer;
begin
Result := Length(I);
end;
function KaAsm(cnt: Integer): TIntArray;
asm
@while1: CMP eax,0
JE @
end
MOV edx,START
MOV ecx,0
PUSH eax
//cnt sichern
{ WHILE SCHLEIFE 2 ANFANG }
@while2 : MOV eax,2
// 2 von
PUSH edx
CALL System.@RandInt
// ..random(2)
POP edx
CMP eax,1
// wenn random(2) = 1
JE @Sock
// springe zu sock
@NSock : CMP edx,3
// größer 3?
JA @minus
JMP @test1
@Minus :
DEC edx
// ja also dec(akt)
JMP @test1
@Sock : INC edx
// inc(akt)
@test1 : INC ecx
CMP edx,ZIEL
JNE @while2
{ WHILE SCHLEIFE 2 ENDE}
PUSH ecx
MOV eax,[ebp-$04]
CALL MLength
INC eax
PUSH eax
LEA eax,[ebp-$04]
MOV ecx,1
MOV edx,Result
CALL System.@DynArraySetLength
ADD esp,$04
MOV eax,[ebp-$04]
CALL MLength
POP ecx
SUB eax,1
MOV edx,eax
MOV eax,[ebp-$04]
MOV [eax+edx*$04],ecx
POP eax
DEC eax
JMP @while1
@
end: RET
end;
Vorlage war diese function (Zum Vergleich und leichterem Verständnis):
Delphi-Quellcode:
function KA(Cnt: Integer): TIntArray;
var akt: Integer;
c: Word;
begin
while Cnt>0
do
begin
Akt:= START;
C:=0;
while Akt <> ZIEL
do
begin
if Random(2)=1
then
Inc(Akt)
else if Akt>3
then Dec(Akt);
Inc(C);
end;
SetLength(Result,Length(Result)+1);
Inc(Result[High(Result)],c);
Dec(Cnt);
end;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."