![]() |
Von C nach Delphi: Benötige Hilfe
Liste der Anhänge anzeigen (Anzahl: 1)
Mahlzeit!
Ich möchte einen Teil eines C-Programms nach Delphi konvertieren, aber habe Probleme mit den im C-Teil ab- und an vorkommenden Pointern. Mir ist klar, dass ich auch in Delphi Pointer direkt nutzen kann -- aber da ich sie bisher noch nie gebraucht habe (jedenfalls nicht explizit) wäre es natürlich schön, wenn ich sie nun auch vermeiden könnte. Es geht schon los mit folgendem: /* Type declarations for the postfix string, stored in a binary tree */ typedef struct tnode { int key; /* leaf value */ char op; /* internal node operator */ struct tnode *left, *right; /* left and right children */ } treenode, *treeptr; /* Type declarations for base modules information */ typedef struct rectangle { float area; /* rectangle area */ float height; /* rectangle height */ float width; /* rectangle width */ int fixed; /* fixed orientation if == 1 */ treeptr ptr; /* pointer to a tree node */ } base_rectangle; Wie setze ich treeptr_ptr um? In Delphi werden die beiden struct wohl RECORDS werden -- aber *left und *right, und *treeptr ?! Kann da jemand behilflich sein? Geht das übrhaupt -- auf die expliziten Pointer verzichten, oder muß man dann das ganze Programm komplett umschreiben? (Achso, nur zum Verständnis: Es geht um binäre Bäume -- falls es jemandem für das Verständnis hilft, das 150 Zeilen C-Programm habe ich hochgeladen.) Vielen Dank & Tschöh Jazzman |
Re: Von C nach Delphi: Benötige Hilfe
Bei der Umsetzung mit Records wirst du nicht auf ausgeschriebene Pointer verzichten können. Wenn du nicht 1:1 umsetzen musst, sondern auf Klassen gehen könntest, wäre das schmucker.
|
Re: Von C nach Delphi: Benötige Hilfe
Code:
type name = Name: Type;
type *name = Name: ^Type; = Name: PType[color=#008000]{ein Pointer}[/color];
Code:
typedef struct tnode {
int key; /* leaf value */ char op; /* internal node operator */ struct tnode *left, *right; /* left and right children */ } treenode, *treeptr;
Delphi-Quellcode:
type
PTreeNode = ^TTreeNode; TTreeNode = record key: Integer; // leaf value op: Char; // internal node operator left, right: PTreeNode; // left and right children end; |
Re: Von C nach Delphi: Benötige Hilfe
Delphi-Quellcode:
Haste da nicht ein "^" vergessen?
PTreeNode = TTreeNode;
|
Re: Von C nach Delphi: Benötige Hilfe
nööööööööö :angel2:
|
Re: Von C nach Delphi: Benötige Hilfe
:mrgreen:
|
Re: Von C nach Delphi: Benötige Hilfe
Sorry Jungens -- aber ich verstehe eure interne Debatte nicht:
Was hat es mit: PTreeNode = TTreeNode; und einem (nicht) vergessenen ^ auf sich? (bin nur ein wenig irritiert) Danke & Gruß Jazzman |
Re: Von C nach Delphi: Benötige Hilfe
1. himitsu hat den dereferenzierungsoperator ^ vergessen.
2. Daniel G hat ihn darauf hingewiesen. 3. himitsu hat es klammheimlich wegkorrigiert (editiert) und ironischerweise behauptet es wäre schon richtig gewesen. 4. Daniel G hat himitsu darauf hingewiesen, das er den Scherz verstanden hatte. :cheers: OnT: Ich würde mir doch lieber 'kurz' die Zeiger in Delphi aneignen. Ist bestimmt auf Dauer lohnenswerter, als sich jetzt eine Alternative zu suchen. |
Re: Von C nach Delphi: Benötige Hilfe
Zitat:
edit: @mleyen: Oder so. :lol: |
Re: Von C nach Delphi: Benötige Hilfe
Ok- jetzt habe ich es auch verstanden :wall:
Aber, ich habe immer noch Probleme mit dem folgenden ( :oops: scuzi!):
Delphi-Quellcode:
Weil, so wie das obige Beispiel, läßt sich dieses ja nicht umsetzen. Was hat es mit dem abschließenden base_rectangle auf sich?
/* Type declarations for base modules information */
typedef struct rectangle { float area; /* rectangle area */ float height; /* rectangle height */ float width; /* rectangle width */ int fixed; /* fixed orientation if == 1 */ treeptr ptr; /* pointer to a tree node */ } base_rectangle; Danke nochmal Jazzman |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr. |
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