Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Von C nach Delphi: Benötige Hilfe (https://www.delphipraxis.net/143840-von-c-nach-delphi-benoetige-hilfe.html)

Uwe Raabe 24. Nov 2009 16:37

Re: Von C nach Delphi: Benötige Hilfe
 
Zitat:

Zitat von Jazzman_Marburg
Was hat es mit dem abschließenden base_rectangle auf sich?

In C wird damit gleich eine Variable dieses Typs deklariert.

Delphi-Quellcode:
type
  Float = Single; // oder Double? Vergess ich immer wieder
  TRectangle = record // hier müsste man eventuell noch das Align anpassen
    area: float;    
    height: float;  
    width: float;  
    fixed: Integer;    
    ptr: TTreeNode;   // oder wie der Typ bei dir nun heißt
  end;

var
  base_rectangle: TRectangle;

Mithrandir 24. Nov 2009 16:43

Re: Von C nach Delphi: Benötige Hilfe
 
Zitat:

Zitat von Uwe Raabe
Delphi-Quellcode:
type
  Float = Single; // oder Double? Vergess ich immer wieder
  TRectangle = record // hier müsste man eventuell noch das Align anpassen
    {...}
    ptr: PTreeNode;   // oder wie der Typ bei dir nun heißt <--- Dit is n Pointer... *g*
  end;

var
  base_rectangle: TRectangle;

:mrgreen:

Uwe Raabe 24. Nov 2009 16:58

Re: Von C nach Delphi: Benötige Hilfe
 
Zitat:

Zitat von Daniel G
Delphi-Quellcode:
    ptr: PTreeNode;   // oder wie der Typ bei dir nun heißt <--- Dit is n Pointer... *g*

Stimmt, hatte irgendwie TTreeNode als class im Sinn. Wie komm ich bloß darauf...

Jazzman_Marburg 24. Nov 2009 17:13

Re: Von C nach Delphi: Benötige Hilfe
 
Vielen Dank an alle, aber da hätte ich noch einen :cry: :

Delphi-Quellcode:
treeptr Rootptr()
{
/* initialize the root of the tree */
   treeptr t = (treeptr)malloc(sizeof(*t));
   t->key = -1;
   t->op = '?';
   t->left = NULL;
   t->right = NULL;
   return t;
}
Lauter Böhmische-Döfer...

Lieben Dank
Jazzman

himitsu 24. Nov 2009 17:29

Re: Von C nach Delphi: Benötige Hilfe
 
malloc ist soviel wie Delphi-Referenz durchsuchenGetMem, wobei hier Delphi-Referenz durchsuchenNew sich hier auch gut machen würde.

-> entspricht dem .

Medium 24. Nov 2009 17:32

Re: Von C nach Delphi: Benötige Hilfe
 
Genauer genommen entspricht "->" "^.", aber Delphi dereferenziert glaub ich bei typisierten Pointern implizit.

Jazzman_Marburg 24. Nov 2009 18:02

Re: Von C nach Delphi: Benötige Hilfe
 
Danke.

D.h. obiges sollte in Delphi dann so etwa aussehen:

Delphi-Quellcode:
FUNCTION Rootptr: PTreeNode; // initialize the root of the tree
VAR t : PTreeNode;
BEGIN
  t      := GetMem(PTreeNode, ^t);
  t.key  := -1;
  t.op   := '?';
  t.left := NULL;
  t.right := NULL;
  Result := t;
END;

Vielen Dank
Jazzman

Uwe Raabe 24. Nov 2009 19:45

Re: Von C nach Delphi: Benötige Hilfe
 
Statt NULL solltest du besser nil nehmen. Null ist als function deklariert, die einen Null-Variant zurückgibt.

Jazzman_Marburg 24. Nov 2009 21:22

Re: Von C nach Delphi: Benötige Hilfe
 
Danke - NIL sieht tatsächlich besser aus als NULL.

Aber ich tu mich mit dem folgendem noch schwer:

Code:
treeptr Rootptr()
{
/* initialize the root of the tree */
   treeptr t = (treeptr)malloc(sizeof(*t));
   t->key = -1;
   t->op = '?';
   t->left = NULL;
   t->right = NULL;
   return t;
}
Da sieht mir mein GetMem irgendwie nicht korrekt aus -- und der Compiler meldet in dieser Zeile ein:
Fehler '(' erwartet, aber ',' gefunden
Hier nochmal meine 'Übersetzung':

Delphi-Quellcode:
FUNCTION Rootptr: PTreeNode;
VAR t : PTreeNode;
BEGIN
  t      := GetMem(PTreeNode, SizeOf(^t));
  t.key  := -1;
  t.op   := '?';
  t.left := NIL;
  t.right := NIL;
  Result := t;
END;
Vielleicht jemand eine Idee?

Gruß
Jazzman

wicht 24. Nov 2009 21:39

Re: Von C nach Delphi: Benötige Hilfe
 
GetMem(t, SizeOf(TTreeNode));


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz