AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Von C nach Delphi: Benötige Hilfe

Ein Thema von Jazzman_Marburg · begonnen am 24. Nov 2009 · letzter Beitrag vom 28. Nov 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

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

Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:09
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
Angehängte Dateien
Dateityp: txt c_code_808.txt (3,6 KB, 3x aufgerufen)
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:12
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:18
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#4

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:23
PTreeNode = TTreeNode; Haste da nicht ein "^" vergessen?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:28
nööööööööö
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:32
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

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

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:36
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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:45
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.



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.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#9

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:46
Zitat von Jazzman_Marburg:
PTreeNode = ^TTreeNode;
Man stellt i.d.R. ein "P" vor die Typenbezeichnung, um zu kennzeichnen, dass es sich um einen Pointer auf die Struktur handelt. Das weiß der Compiler aber nicht. Deswegen braucht er ein "^". Das ist gleichbedeutend mit dem "*" aus C.

edit: @mleyen: Oder so.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

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

Re: Von C nach Delphi: Benötige Hilfe

  Alt 24. Nov 2009, 15:55
Ok- jetzt habe ich es auch verstanden

Aber, ich habe immer noch Probleme mit dem folgenden ( scuzi!):

Delphi-Quellcode:
/* 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;
Weil, so wie das obige Beispiel, läßt sich dieses ja nicht umsetzen. Was hat es mit dem abschließenden base_rectangle auf sich?

Danke nochmal
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz