000
25.07.2007, 10:30 Uhr
DataJockey
|
ich habe ein Problem mit Zeigern als Referenzparameter in Funktionen. ich suche sowas wie nen out Parameter in Delphi fuer Objektreferenzen.
eine vorgegebene Funktion gibt eine Referenz auf CObject zurueck:
C++: |
CObject* getObjectReference(int ind);
|
meine Funktion soll nun die Position eines passenden Objektes und das Objekt selbst zurueckgeben.
in dieser Art funktioniert es schon:
meine Funktion:
C++: |
CObject* pickObject(int &pos) { //init pos = -1;
//..in Schleife suchen und wenn gefunden return getObjectReference(pos);
//..wenn nicht gefunden return NULL; }
|
der aufrufende Code sieht so aus:
C++: |
int targetPos = -1; CObject *myObject = pickObject(targetPos); if (myObject) { //code wenn gefunden } else { //code wenn nicht gefunden }
|
soweit so gut. ich hatte bis jetzt nur eine Objektreferenz, welche ich zurueckgeben wollte. aber was ist, wenn ich 2 habe. dafuer muss ich die Objektreferenzen als var-parameter in die parameterliste packen.
der Code sollte eigentlich auch so funktionieren: meine Funktion:
C++: |
int pickObject(CObject *aObject) { //init aObject = NULL; //wenn gefunden aObject = getObjectReference(pos); return pos;
//wenn nicht gefunden return -1; }
|
der aufrufende Code dann so:
C++: |
CObject *myObject = NULL; int targetPos = pickObject(myObject); if (myObject) { //code wenn gefunden } else { //code wenn nicht gefunden }
|
edit: das Problem ist bei Version2, dass der aufrufende Code immer nen NULL pointer hat, weil die Referenz in der Funktion ja nicht als Referenz deklariert ist.
argh, ...sowas kann nen eingefleischten Delphi Progger echt fertig machen.
vlt ein bissl ausfuehrlich, aber besser so als zu wenig. hoffe ihr hab ne idee.
danke, gruss dj -- There are 10 kinds of people. Those who understand binary code and those who don't. Dieser Post wurde am 25.07.2007 um 10:44 Uhr von DataJockey editiert. |