Schön ist es nicht, eine Pascal-Variante wäre besser. Aber wenn sich keine ergibt:
Delphi-Quellcode:
function TTest.getDatenArray:pointer;
// EAX --> self
// EDX --> Pointer auf Result
function helpTypeInfo:pointer;
type TFieldtype=array
of Double;
//entsprechend des Types DatenArray
//besser wäre es gleich einen
//einheitlichen Type zu nehmen
begin
result:=typeinfo(TFieldtype);
end;
asm
push ebx
push edx
push eax
call helptypeinfo
mov ebx,eax
//Inhalt des Arrays (in Result) löschen
mov eax,[esp+4]
mov edx,ebx
call system.@finalize
//Wert von x an Result übergeben
pop eax
mov edx,[eax]+DatenArray
mov eax,[esp]
mov [eax],edx
//Referenzzähler erhöhen
push edx
mov eax,esp
mov edx,ebx
call system.@addref
pop eax
pop eax
pop ebx
end;
...
//Aufruf nur so:
var x:
array of double;
begin
...
x:=Test.getDatenArray;
end;
Edit:
Generics Variante funktioniert doch super. Warum nimmst du nicht die?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.