Moin, Moin!
Mein Projekt "von C nach Delphi" ist mittlerweile von der 1:1 Übersetzung ins Stadium des Debuggens übergegangen. D.h. die Compilierung ist fehlerfrei -- aber es hackt bei dem Versuch es laufen zu lassen, und da habe ich Zweifel an meinen Übersetzungskünsten bekommen.
Vielleicht kann sich nochmal ein Experte folgendes Coding anschauen - ich zeige nur die relevante Stelle, an der es knallt (
Zugriffsverletzung):
Hier der Original (d.h. fehlerfreie) C-Code:
Code:
typedef struct tnode {
int key;
char op;
struct tnode *left, *right;
} treenode, *treeptr;
typedef struct rectangle {
float area;
float height;
float width;
int fixed;
treeptr ptr; /* pointer to a tree node */
} base_rectangle;
base_rectangle in_module[MAXMOD]; /* array of modules */
in_module[j].ptr->key = j;
Und hier meine Delphi-Übersetzung:
Delphi-Quellcode:
TYPE
PTreeNode = ^TTreeNode;
TTreeNode = RECORD
Key : INTEGER;
Op : CHAR;
Left : PTreeNode;
Right : PTreeNode;
END; // TTreeNode
TYPE
Float = Single;
TRectangle = record
Area : Float;
Height: Float;
Width : Float;
Fixed : INTEGER;
Ptr : PTreeNode; // pointer to a tree node
END; // TRectangle
in_module : ARRAY [0..MAXMOD] OF TRectangle; // array of modules
in_module[j].ptr.key := j; // hier knallt es!
Es knallt in der o.g. letzten Zeile. Wenn j = 0 läufts gut, denn dann ist ptr = $12FE1D0, und die Zuweisung klappt. Wenn aber j = 1 dann ist ptr = nil, und dann haut es nicht mehr hin.
Aber ich bin mir nicht sicher, ob mein Ausdruck "
in_module[j].ptr.key := j;" überhaupt dem C-Ausdruck "
in_module[j].ptr->key = j;" equivalant ist?
Wäre großartig wenn sich das mal jemand anschauen würde.
Lieben Dank & Gruß
Jazzman