Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ nach Delphi (https://www.delphipraxis.net/79757-c-nach-delphi.html)

gmc616 27. Okt 2006 13:43


C++ nach Delphi
 
Humppa C-Gurus,

ich versuch mich gerade daran eine C-Structur nach Delphi zu übersetzen und stoße dabei auf ein Problem:
Ich kann kein C++ ! :cry:

kann mir bitte Einer erklären was das zu bedeuten hat.
Code:
#define GetDocType(options) ((Options & SNDO_DOCTYPE_MASK) >> 12)
#define GetSRDocType(sr) GetDocType ((sr)->Options)
#define GetSRDocTypeEx(sr) (((sr)->Flags & SNDF_APPOINTMENT) ? DOC_TYPE_SCHEDULE : \
                            ((sr)->Flags & SNDF_CONNECT) ? DOC_TYPE_ECT : \
                            GetSRDocType (sr))
zur näheren Erläuterung der Variablen:
Options und Flags sind von Datentyp word in dem bitweise einzelne Eigenschaften gesetzt sind.
SNDO_xxx bzw. SNDF_xxx sind Bitmaskierungen.

Aber was haben die Operatoren wie ->, &, ? und : \ zu bedeuten?
Bitte helft mir auf die Sprünge, denn ich habe keinen Bock mir wegen diesen "Kleinigkeiten" extra, so kurz vor dem Ziel, ein C++ Buch zu kaufen. :angel:

Danke schon mal im Voraus.
gmc

Sidorion 27. Okt 2006 13:56

Re: C++ nach Delphi
 
Tja das sind sog. Templates, die gibbet in Delphi nich. Einfachste Lösung wäre jeweils ne Funktion zu definieren, die genau das macht, was jeweils in den Klammern steht und genauso heisst, wie das Template.

JasonDX 27. Okt 2006 14:12

Re: C++ nach Delphi
 
Zitat:

Zitat von gmc616
Aber was haben die Operatoren wie ->, &, ? und : \ zu bedeuten?

  • Instanz->Methode() ist in C++ ca. das selbe wie (*Instanz).Methode(). In Delphi wird das ganz normal aufgerufen: Instanz.Methode().
  • & ist der binaere und-Operator. In Delphi bekannt als Delphi-Referenz durchsuchenand
  • ? : ist die Syntax fuer eine Bedingte Zuweisung:
    Code:
    Variable = Bedingung ? WertWennBedingungTrue : WertWennBedingungFalse
    Du kannst das ueber eine if-Abfrage loesen. IIRC gabs aber auch ein aehnliches Konstrukt in Delphi.
  • \ Ist bei Praeprozessoranweisungen oder einzeiligen Kommentaren die Anweisung, dass die Zeile in der naechsten fortgesetzt wird.
    Code:
    #define blubb x * y * \
                  (z + 1)
    //ist das selbe wie
    #define blubb x * y * (z + 1)
Zitat:

Zitat von gmc616
Bitte helft mir auf die Sprünge, denn ich habe keinen Bock mir wegen diesen "Kleinigkeiten" extra, so kurz vor dem Ziel, ein C++ Buch zu kaufen. :angel:

Man braucht nicht zwingend Buecher, es gibt haufenweise (z.T. auch gute) C++Tutorials ;)

greetz
Mike

r2c2 27. Okt 2006 20:18

Re: C++ nach Delphi
 
Noch ne kleine Anmerkung:

Zitat:

Zitat von Sidorion
Tja das sind sog. Templates, die gibbet in Delphi nich. Einfachste Lösung wäre jeweils ne Funktion zu definieren, die genau das macht, was jeweils in den Klammern steht und genauso heisst, wie das Template.

Das sind keine Templates, sondern Makros. Im Gegensatz zu Templates, die deutlich praktisch sein können, bringen Makros manchmal Probleme. Warum? Sie verhalten sich anders, als Funktionen, da sie vom Präprozessor behandelt werden, was manchmal doch etwas "verwirrend" sein kann. Ist dieses "verwirrende" Verhalten erwünscht, hat man mitunter Probleme mit dem Übersetzen...

Beispiel(ich hoffe ich mach das jetzt richtig. Hab mich bisher aus gutem Grund von Makros fern gehalten):
Code:
#define SQR(x) (x * x)

// ist nicht äquivalent zu:

int sqr(int x)
{
  return x * x;
}

// und zwar dann, wenn man folgendes macht:

y = sqr(1 + 2); // ist 9
y = SQR(1 + 2); // ist IMHO 5

// warum? der Präprozessor macht folgendes daraus:
y = 1 + 2 * 1 + 2;
So ein Verhalten lässt sich mit Funktionen (zum Glück) nicht nachbilden...

mfg

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 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