Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Out in C++ Klasse - Wie übersetzen? (https://www.delphipraxis.net/157048-out-c-klasse-wie-uebersetzen.html)

Yakumo500 26. Dez 2010 20:50

Delphi-Version: 5

Out in C++ Klasse - Wie übersetzen?
 
Hi,

Ich habe eine Frage zur Übersetzung von C++ nach Pascal.
Ich habe eine externe Klasse in C++, die eine Funktion enthält, die wie folgt aussieht:
Code:
//...
void Out(const char *szFormat, ...);
//...
Meine Frage wäre jetzt wie ich die Funktion in Pascal deklariere, da out ein Delphi Keyword ist und mit dem "..." als Parameter bin mit meinem Latein auch am Ende.

himitsu 26. Dez 2010 21:31

AW: Out in C++ Klasse - Wie übersetzen?
 
void = kein Typ, also kein Result und somit eine Prozedur

Da OUT in Delphi ein reserviertes Wort ist, mußt du dieses umbenennen.

char * = Zeiger auf ein Delphi-Referenz durchsuchenChar, oder eher ein Zeiger auf ein Char-Array, also ein PChar

In Bezug auf Delphi 2009 und Neuer, sollte man statt PChar, eher ein PAnsiChar verwenden.

Also Aufrufkonvention würde ich auf Delphi-Referenz durchsuchenstdcall tippen, oder eventuell Delphi-Referenz durchsuchencdecl, jenachdem von wo dieser Code stammt.

... = es folgen weitere Parameter
in Delphi läßt sich sowas dynamisches aber nicht geklarieren. (jedenfalls nicht auf diese Art)

Delphi-Quellcode:
procedure Output(szFormat: PChar; ...); stdcall;

Yakumo500 26. Dez 2010 22:03

AW: Out in C++ Klasse - Wie übersetzen?
 
Danke aber ich dachte das bei einer externen Klasse die Namen der Funktionen gleich sein müssen!

omata 27. Dez 2010 00:47

AW: Out in C++ Klasse - Wie übersetzen?
 
Also ist kann das ohne Probleme erstellen...
Delphi-Quellcode:
procedure Out(const szFormat:PChar);
begin
end;
Auch wenn das Out farbig hervorgehoben wird, so ist der Kontext korrekt. Ich verwende Delphi 7.

PS: Selbst eine DLL ist so ohne Probleme möglich. Geht das mit Delphi 2010 nicht mehr? (Kann es gerade nicht ausprobieren)

himitsu 27. Dez 2010 08:43

AW: Out in C++ Klasse - Wie übersetzen?
 
Man kann beim Import ja einen anderen Namen angeben, als man nutzt.
Somit wäre es kein Poblem, intern einen anderen Namen zu verwenden.

Yakumo500 27. Dez 2010 10:06

AW: Out in C++ Klasse - Wie übersetzen?
 
Ok vielen Dank ich habe aber noch eine ähnliche Frage. Wie würdet ihr folgendes übersetzen:
Code:
interface ISpr
{
  virtual INT      Begin(DWORD dMode=0)=0;
  virtual INT      End()=0;
};
Mein Vorschlag wäre folgender bin mir aber nicht sicher wegen interface und Begin und End.
Delphi-Quellcode:
type
  ISpr = interface
    function &Begin(dMode: DWORD = 0): Integer; cdecl;
    function &End(): Integer; cdecl;
  end;
// edit: @mirage228 Danke für den Tipp mit &.

mirage228 27. Dez 2010 10:41

AW: Out in C++ Klasse - Wie übersetzen?
 
Zitat:

Zitat von omata (Beitrag 1070556)
Also ist kann das ohne Probleme erstellen...
Delphi-Quellcode:
procedure Out(const szFormat:PChar);
begin
end;
Auch wenn das Out farbig hervorgehoben wird, so ist der Kontext korrekt. Ich verwende Delphi 7.

PS: Selbst eine DLL ist so ohne Probleme möglich. Geht das mit Delphi 2010 nicht mehr? (Kann es gerade nicht ausprobieren)

Im Zweifel einfach ein & vor den Bezeichner. Ich weiß jedoch nicht, ob sowas in Delphi 7 schon geht.

Delphi-Quellcode:
var
  &begin: Integer;
  &out: string;


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