Funktionsaufruf - Initialisierung eines Parameters

HolgerX

Mitglied
Da ich das "Glück" habe, auf bereits von jemandem programmierte Funktionen zugreifen zu "dürfen", bin ich gerade in einer misslichen Lage.
Und zwar habe ich keine Ahnung, wie ich diese Funktion aufrufen soll.
Die C-Funktion sieht folgendermaßen aus:
Code:
short PicLoadPixPic( short nr, unsigned char *** data, short additional_rows);
Die Funktion lädt ein picture in den Speicher.
Code:
Allocates memory for the whole picture and loads it.
The form of the picturefile must be PIC_PIXEL (see member 'form_type' of structure PICINFOSTRUCT).
The picture is organized in rows, an array of pointers to the lines of the picture is returned.
The memory is allocated in ONE block and '(* data)[0]' points to this block after the call.
Additionally '(*data)[i]' points to row i of the picture.
A number of rows to be appended to the end of the picture, initialized with 0s can be specified.

Dabei bedeuten die Parameter folgendes:
nr: handle to file (return value from Pic_open()
data: pointer to place to receive the 'unsigned char**' to the picture.
additional_rows: number of rows to append to the end of the picture.


Meine Frage ist jetzt, wie ich den Parameter data ansprechen soll?
Da ich das picture bereits geöffnet habe, habe ich auch ein handle (nr) zu dem file. Zusätzliche Zeilen wollte ich nicht an das Bild anfügen, warum sollte man auch?

Das picturefile ist vom Typ PIC_PIXEL, das habe ich schon gecheckt.

Die Funktion sieht allerdings nur nach der Dokumentation wie oben aus, im Programmcode steht folgendes:
Code:
short   PicLoadPixPic ( short nr, PIXELPICTURE * data, 
                           short additional_rows);
Dabei gilt allerdings:
Code:
typedef unsigned char ** PIXELPICTURE;
Wenn ich das also richtig verstanden haben soll, dann ist der Parameter data ein Pointer, der zu einem Platz zeigt, den die Funktion dann als "Startpunkt" (im Speicher) für das picture nimmt.

Also dachte ich mir, dass ich einfach einen Zeiger vom Typ PIXELPICTURE anlege und den dann als Parameter übegebe. - Aber wie initialisiere ich diesen?
Wenn er nicht initialisiert wird, stürzt das Programm immer ab, da zu Beginn der Funktion
Code:
 *data = NULL;
steht.
 
Habe gerade (so glaube ich zumindest) die Lösung für mein Problem gefunden.
Code:
PIXELPICTURE* pix;
pix = new PIXELPICTURE;
Somit ist der Pointer initialisiert und ich kann pix zum Funktionsaufruf nutzen.
Auf jeden Fall stürzt das System jetzt nicht mehr ab. :)
 
Zurück