AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi proceduren eines arrays als pointer übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

proceduren eines arrays als pointer übergeben

Ein Thema von empanyc · begonnen am 9. Feb 2004 · letzter Beitrag vom 24. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
empanyc

Registriert seit: 31. Jan 2004
42 Beiträge
 
#1

proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 21:28
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:
function getfkt : pointer;
begin
 getfkt := obj_array[5].gewuenschte_fkt;
end;
kommt "variable erforderlich".
Ich habe nach Recherche solche Konstruktionen gefunden:

Delphi-Quellcode:
...
 getfkt := tobj_array.gewuenschte_fkt;
...
Dies bringt zwar keinen Fehler, funktioniert aber nicht.
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
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 21:43
Hi,

du musst einen Typ definieren. ca so

Delphi-Quellcode:
type
  TIrgendwas = function : double;

...

function getfkt : TIrgendwas;
begin
  result := obj_array[5].gewuenschte_fkt;
end;
Wenn mich nicht alles täuscht müsste es so funktionieren.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
empanyc

Registriert seit: 31. Jan 2004
42 Beiträge
 
#3

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 22:11
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
  Mit Zitat antworten Zitat
Bernd Ua

Registriert seit: 10. Nov 2003
Ort: Lindhorst
87 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 22:18
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
Bernd Ua
  Mit Zitat antworten Zitat
empanyc

Registriert seit: 31. Jan 2004
42 Beiträge
 
#5

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 22:23
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
  Mit Zitat antworten Zitat
Bernd Ua

Registriert seit: 10. Nov 2003
Ort: Lindhorst
87 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 22:27
Es steckt nicht beides in einem Pointer es sind zwei Pointer !
SizeOf(TMethod) = 8 !!
Bernd Ua
  Mit Zitat antworten Zitat
empanyc

Registriert seit: 31. Jan 2004
42 Beiträge
 
#7

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 22:37
Achso.
Gut, kann ich dann net einfach beides übergeben?

So in der Art:
Delphi-Quellcode:
pointer1 := @mein_obj;
pointer2 := @mein_obj.fkt;
(nur das die zweite Zeile nicht funktioniert...)
Und ich es im Hauptprogramm wieder zusammensetze?

gruß
mario
*ehrgeizigbin*
  Mit Zitat antworten Zitat
Bernd Ua

Registriert seit: 10. Nov 2003
Ort: Lindhorst
87 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 22:50
Wieso reite ich wohl so auf TMethod rum ?

Delphi-Quellcode:
 TMethod = record
    Code, Data: Pointer;
  end;
Bernd Ua
  Mit Zitat antworten Zitat
empanyc

Registriert seit: 31. Jan 2004
42 Beiträge
 
#9

Re: proceduren eines arrays als pointer übergeben

  Alt 9. Feb 2004, 23:07
Achso!

Hab gedacht, des wär ein "Pseudo"-typ von dir.

Werd des in dem Fall morgen gleich mal austesten.

thx
mario
  Mit Zitat antworten Zitat
empanyc

Registriert seit: 31. Jan 2004
42 Beiträge
 
#10

Re: proceduren eines arrays als pointer übergeben

  Alt 10. Feb 2004, 22:58
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz