AGB  ·  Datenschutz  ·  Impressum  







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

std::basic_string class -> pascal

Ein Thema von DOCaCola · begonnen am 26. Mär 2007 · letzter Beitrag vom 27. Mär 2007
 
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#4

Re: std::basic_string class -> pascal

  Alt 26. Mär 2007, 16:22
Hallo,

wie Robert Marquardt schon feststellte, kannst du die Funktion aus Delphi nicht aufrufen, da du eine C++-Klasse übergeben müßtest, die sich vom Aufbau völlig von Delphi-Klassen unterscheidet. Zwar könnte man mit C++Builder auch aus Delphi verwendbare Klassen erstellen, doch macht das hier wenig Sinn, zumal da std::string nicht trivial ist und einige mit Delphi-Klassen nicht ohne weiteres mögliche Funktionalität implementiert - überdies ist es natürlich auch noch compilerabhängig.
Neben COM ist die einzige Möglichkeit, um zwischen mit verschiedenen Programmiersprachen/Compilern erstellten Programmteilen interagieren zu können, ein C-Interface. D.h., du müßtest eine Wrapperfunktion in C++ implementieren, die z.B. einen const char* anstatt eines const std::string& übernimmt. Auch muß die Wrapperfunktion als extern "C" deklariert sein, nicht aufgrund der Aufrufkonvention (die ist übrigens in C und C++ normalerweise __cdecl, __fastcall ist bei Delphi üblich), sondern damit der Name nicht dekoriert wird, was bei C++ zur Unterstützung der Funktionsüberladung üblich ist.

Beispiel:
Code:
// Wrapper:
extern "C" void portableTextDisplayAdd (const char* ptr)
{
    TextDisplayAdd (ptr);
}
Delphi-Quellcode:
// Aufruf:
portableTextDisplayAdd (PChar ('ein String'));
Wie du die Funktion in Delphi deklarierst, hängt davon ab, ob du sie aus einer DLL oder einem statisch hinzugelinkten Modul importierst. Da müssen dir die Delphi-Experten weiterhelfen.
Moritz
  Mit Zitat antworten Zitat
 


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 02: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-2025 by Thomas Breitkreuz