Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi C zu Delphi Übersetzungs Frage (https://www.delphipraxis.net/80709-c-zu-delphi-uebersetzungs-frage.html)

nitschchedu 14. Nov 2006 07:24


C zu Delphi Übersetzungs Frage
 
Hallo alle zusammen wie übersetzte ich den das ins Delphi

Code:
class LNIMPEXPCL LNNotesSession : public LNNotesClass
{
friend class LNCalendar;            
public:
   LNNotesSession();
   ~LNNotesSession();

   static void operator delete( void *object );  //Wie übersetzt man das ?
   static void * operator new( size_t size );

   LNSTATUS AbbreviateName( const LNString &name, LNString *shortname ) const;
...
Habe mal so weit wie ich s kapieren würde übersetzt!

Delphi-Quellcode:
LNNotesSession class(LNNotesClass)
 private
 public
  procedure AbbreviateName(const name: LNString; shortname: pLNString); //Ist das so richtig ?

  constructor Create; //würde ich ~LNNotesSession(); zuordnen
end;
Könnt ihr mir helfen ?

nitschchedu 15. Nov 2006 14:28

Re: C zu Delphi Übersetzungs Frage
 
* pusch * :cry:
Kann mir keiner Helfen ? oder einen link ?

OregonGhost 15. Nov 2006 14:34

Re: C zu Delphi Übersetzungs Frage
 
Also, die Funktion, die denselben Namen hat wie die Klasse, ist der Konstruktor.
Das gleiche mit der Tilde vorneweg ist der Destruktor.

Beim LNString ist die Frage, um was es sich dabei handelt. Zeig also mal die Definition dazu.
Die beiden Operatoren new und delete wurden für diese Klasse überladen, sie dienen der Speicherzuordnung und -freigabe. Du musst vermutlich deutlich mehr posten, damit man sehen kann, ob es wirklich nötig ist, sie zu überladen, bzw. ob und wie man das in Delphi umsetzen könnte.

AbbreviateName ist keine Prozedur, sondern eine Funktion, die einen Rückgabewert vom Typ LNSTATUS hat. Wiederum wäre dessen Definition interessant.

Die Frage ist jetzt, warum genau übersetzt du das? Wenn du hoffst, dass du in Delphi eine von einer DLL exportierte C++-Klasse verwenden kannst, muss ich dich enttäuschen. Wenn du hingegen die Klasse richtig portieren willst, solltest du dir überlegen, ob du nicht einiges anders machen kannst/musst als in C++.

Edit: Rechtschreibfehler korrigiert.

sancho1980 15. Nov 2006 14:41

Re: C zu Delphi Übersetzungs Frage
 
wenn ich dich richtig verstehe, willst du einfach nur wissen, wie man konstruktoren und destruktoren in pascal syntaktisch markiert, richtig?

steht eigentlich alles in der delphi-hilfe (stichwort "konstruktor"/"destruktor"):


Beispiel (aus Delphi-Hilfe):
Zitat:

Das folgende Beispiel zeigt einen Klassentyp und den zugehörigen Konstruktor:

type
TShape = class(TGraphicControl)
private
FPen: TPen;
FBrush: TBrush;
procedure PenChanged(Sender: TObject);
procedure BrushChanged(Sender: TObject);
public
constructor Create(Owner: TComponent); override;
destructor Destroy; override;
...
end;
constructor TShape.Create(Owner: TComponent);

begin
inherited Create(...);
Width := 65; // Geerbte Elemente initialisieren
Height := 65;
FPen := TPen.Create; // Felder initialisieren
FPen.OnChange := PenChanged;
FBrush := TBrush.Create;
FBrush.OnChange := BrushChanged;
end;

nitschchedu 16. Nov 2006 08:16

Re: C zu Delphi Übersetzungs Frage
 
Ich vermude mal das LNSTATUS =

Code:

#undef LNERRDEF
#undef LNWARNDEF

#define LNERRDEF( name, msg )    \
   const LNSTATUS LNERR_##name = \
      (((LNSTATUS) LNSTATUS_ERROR) << 16) + LNERR_CODE_##name;

#define LNWARNDEF( name, msg )    \
   const LNSTATUS LNWARN_##name = \
      (((LNSTATUS) LNSTATUS_WARNING) << 16) + LNWARN_CODE_##name;
Wobei ich nicht ganz verstehe was die da machen? :(



Ist das dann der Destructer ?
Code:
~LNNotesSession();
Ich habe vor eine Schnittstelle einer DLL zunutzen! :-D
Und Einiges will ich auch anders machen.
Mir geht es erstmal darum zuverstehen was sie machen und wie das in Delphi aussieht.

Wenn noch was fehlt was ich posten soll sag einfach bescheid!

nitschchedu 22. Nov 2006 09:07

Re: C zu Delphi Übersetzungs Frage
 
* pusch *

Robert Marquardt 22. Nov 2006 09:25

Re: C zu Delphi Übersetzungs Frage
 
Das C++ API einer DLL in Delphi zu nutzen ist praktisch unmoeglich.
Begrabe die Idee.

"~LNNotesSession();" Ja, das ist der Destruktor. Lies was OregonGhost geschrieben hat.

Nein du hast nicht die Typdeklaration von LNSTATUS erwischt.
LNERRDEF und LNWARNDEF sind offensichtlich zwei ganz besonders boese C Preprocesor Makros, die der Deklaration von einfachen Zahlenkonstanten in der C Source dienen.
Ich wuerde daher vermuten das LNSTATUS einfach vom Typ DWORD ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 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-2025 by Thomas Breitkreuz