![]() |
C++ my Delphi benutzen
hallo, ich ahbe ein C++ kode in einer cpp detei, wie kann ich es in delphi nutzen? kann man eine dll erstellen, und dann die c++ procedur aufzurufen? oder wass kann man tuhn?
dass kode is relativ hard nach delphi umzuschreiben, obwohl es nicht lang ist |
Re: C++ my Delphi benutzen
Hi sk.Silvia,
Zitat:
![]() bzw. ![]() Gruß Assertor |
Re: C++ my Delphi benutzen
Hi,
wenn der Code nicht lang ist kann ihn vielleicht ich oder ein anderer User nach Delphi übersetzen. Du kannst ihn ja mal hier Posten oder Hochladen. MfG Carlo |
Re: C++ my Delphi benutzen
Delphi-Quellcode:
void ResetAdapter(char * AdapterName) {
struct _GUID guid = {0xBA126AD1,0x2166,0x11D1,0}; memcpy(guid.Data4, "\xB1\xD0\x00\x80\x5F\xC1\x27\x0E", 8); unsigned short * buf = new unsigned short[strlen(AdapterName)+1]; void (__stdcall *NcFreeNetConProperties) (NETCON_PROPERTIES *); HMODULE NetShell_Dll = LoadLibrary("Netshell.dll"); if (!NetShell_Dll) { printf("Couldn't load Netshell.dll\n"); return; } NcFreeNetConProperties = (void (__stdcall *)(struct tagNETCON_PROPERTIES *))GetProcAddress(NetShell_Dll, "NcFreeNetconProperties"); if (!NcFreeNetConProperties) { printf("Couldn't load required DLL function\n"); return; } for (unsigned int i = 0; i <= strlen(AdapterName); i++) { buf[i] = AdapterName[i]; } CoInitialize(0); INetConnectionManager * pNCM = NULL; HRESULT hr = ::CoCreateInstance(guid, NULL, CLSCTX_ALL, __uuidof(INetConnectionManager), (void**)&pNCM); if (!pNCM) printf("Failed to instantiate required object\n"); else { IEnumNetConnection * pENC; pNCM->EnumConnections(NCME_DEFAULT, &pENC); if (!pENC) { printf("Could not enumerate Network Connections\n"); } else { INetConnection * pNC; ULONG fetched; NETCON_PROPERTIES * pNCP; do { pENC->Next(1, &pNC, &fetched); if (fetched && pNC) { pNC->GetProperties(&pNCP); if (pNCP) { if (wcscmp(pNCP->pszwName, buf) == 0) { pNC->Disconnect(); pNC->Connect(); } NcFreeNetConProperties(pNCP); } } } while (fetched); pENC->Release(); } pNCM->Release(); } FreeLibrary(NetShell_Dll); CoUninitialize (); } |
Re: C++ my Delphi benutzen
wenn du die C++ routine compilieren kannst, in ein .OBJ kannst du das .OBJ via {$link xyz.obj} einfach in dein programm einlinken. da müsstest dann nur noch die deklaration der funktion in pascal schreiben... :-)
vielleicht wär das ein weg... <HTH> GG |
Re: C++ my Delphi benutzen
und die funkcion werde ich wie rufen?
wenn si in C++ void ResetAdapter(char * AdapterName) rufe ich sie dann ResetAdapter(AdapterName : array of char) ? |
Re: C++ my Delphi benutzen
ja, so in etwa ...
deklarieren
Delphi-Quellcode:
und dann so aufrufen:
procedure ResetAdapter(const AdapterName: PChar); external; cdecl;
Delphi-Quellcode:
die details der deklaration hängen aber von den compileroptionen des C/C++ compilers ab... kannst normal einstellen... :-)
ResetAdapter(aAdapterName);
<HTH> GG |
Re: C++ my Delphi benutzen
dass is toll, kann ich noch ein request haben?
kann es jemand fur mich in *.obj kompilieren, den ich habe Borland C++ nicht :( |
Re: C++ my Delphi benutzen
|
Re: C++ my Delphi benutzen
Zitat:
d.h. die ganzen header dürften mit einem anderen compiler selbst geschrieben werden müssen, wenn die sourcen nicht vorhanden sind. denke, es wär beinahe besser den code gleich von der kristallkugel direkt in delphi zu implementieren, anstatt zuerst noch nach C |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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