![]() |
Re: Wie krieg ich eine Referenz auf Array als Rückgabewert
Hallo,
ich würd's so machen
Delphi-Quellcode:
So in etwa sollte es gehen
type
PMeinArray = ^TMeinArray; TMeinArray = Array [1..1000] of Irgendwas; var MeinArray : PMeinArray; Loop : Integer; procedure HoleAdresse (MeinArray : PMeinArray); begin MeinArray := @LokalesArray end; begin HoleAdresse (MeinArray); for Loop := 1 to 1000 do TuWasMitElement (MeinArray [Loop]^) end. MfG Klaus |
Re: Wie krieg ich eine Referenz auf Array als Rückgabewert
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: :gruebel: Generics Variante funktioniert doch super. Warum nimmst du nicht die? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz