Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Wie krieg ich eine Referenz auf Array als Rückgabewert

  Alt 19. Dez 2007, 13:42
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.
  Mit Zitat antworten Zitat