Einzelnen Beitrag anzeigen

Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#31

Re: Von C nach Delphi: Benötige Hilfe

  Alt 28. Nov 2009, 12:16
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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat