![]() |
proceduren eines arrays als pointer übergeben
Hi,
ich habe in ner DLL ein Array von Objekten. Diese Objekte haben ein paar Prozeduren und Funktionen. Diese möchte ich nun per Funktion an das Hauptprogramm übergeben. Nur, wenn ich etwas in dieser Art übergebe:
Delphi-Quellcode:
kommt "variable erforderlich".
function getfkt : pointer;
begin getfkt := obj_array[5].gewuenschte_fkt; end; Ich habe nach Recherche solche Konstruktionen gefunden:
Delphi-Quellcode:
Dies bringt zwar keinen Fehler, funktioniert aber nicht.
...
getfkt := tobj_array.gewuenschte_fkt; ... Ist ja auch logisch, da man ja so nicht festlegen kann, von welchem Objekt nun die Funktion übergeben wird. "Normale" Fkt/Prozeduren übergeben ist kein Problem, nur sobald die in nem Array stecken gibts Probleme. Weiss jemand wie ich es anstellen muss? Danke! Mario |
Re: proceduren eines arrays als pointer übergeben
Hi,
du musst einen Typ definieren. ca so
Delphi-Quellcode:
Wenn mich nicht alles täuscht müsste es so funktionieren.
type
TIrgendwas = function : double; ... function getfkt : TIrgendwas; begin result := obj_array[5].gewuenschte_fkt; end; grüße, daniel |
Re: proceduren eines arrays als pointer übergeben
Ja gut, aber die Funktion soll halt verschiedene Prozeduren
unterschiedlicher Signatur zurückgeben. Mit Pointern funktioniert das ganz gut, solange die Fkt/Prozeduren sich nicht in nem Array befinden. Im Hauptprogramm hab ich dann schon solche Tmeine_fkt = procedure... denen ich dann die zurückgelieferten Pointer der Fkt zuweise. Aber Fkt soll halt universell sein und des geht halt nur mit Pointern. Trotzdem danke! Gruß Mario |
Re: proceduren eines arrays als pointer übergeben
Mit nem Pointer kann das nicht gehen.
Methodenzeiger sind quasi ein Doppelzeiger, da neben der Codeadresse auch die Objektadresse enthält ( woher sollte self in der Methdoe sonst kommen ) wird. Minimum für den Rückgabewert ist also so etwas wie TMethod Bernd |
Re: proceduren eines arrays als pointer übergeben
Ich meinte es soweit getestet zu haben, dass es erst nicht mehr funktionierte,
sobald ich es in ein Array gesteckt habe. Ich versteh jetzt deine Argumentation nicht ganz. Es ist mir doch recht, dass beides im Pointer "drinsteckt". Ich will ja gerade eben mit diesem Pointer genau die Prozedur von dem einen bestimmten Objekt starten. gruß mario |
Re: proceduren eines arrays als pointer übergeben
Es steckt nicht beides in einem Pointer es sind zwei Pointer !
SizeOf(TMethod) = 8 !! |
Re: proceduren eines arrays als pointer übergeben
Achso.
Gut, kann ich dann net einfach beides übergeben? So in der Art:
Delphi-Quellcode:
(nur das die zweite Zeile nicht funktioniert...)
pointer1 := @mein_obj;
pointer2 := @mein_obj.fkt; Und ich es im Hauptprogramm wieder zusammensetze? gruß mario *ehrgeizigbin* ;) |
Re: proceduren eines arrays als pointer übergeben
Wieso reite ich wohl so auf TMethod rum ?
Delphi-Quellcode:
:mrgreen:
TMethod = record
Code, Data: Pointer; end; |
Re: proceduren eines arrays als pointer übergeben
Achso! :mrgreen:
Hab gedacht, des wär ein "Pseudo"-typ von dir. Werd des in dem Fall morgen gleich mal austesten. thx mario |
Re: proceduren eines arrays als pointer übergeben
Ich hätt nochmal ne frage:
Lässt sich die Funktion, durch einen TMethod-Typ identifiziert, direkt aufrufen, oder muss ich die TMethod-Daten erst wieder einem äquivalenten Objekttyp zuweisen und dann über diesen die Fkt aufrufen? Vielen Dank! Mario |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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-2025 by Thomas Breitkreuz