![]() |
Delphi-Version: 2005
Fehler beim DLL aufruf
die DLL exportiert mehrere Funktionen z.B.
Delphi-Quellcode:
aufrufen tue ich mit
function CountryCodeToMCC(CountryCode: String): Integer;
var i: Integer; begin result := 0; i := 0; while TabHWName[i].MNC < 999 do begin if UpperCase(CountryCode) = UpperCase(TabHWName[i].CountryCode) then begin result := TabHWName[i].MCC; break; end; inc(i); end; end; function MCCToCountry(MCC: Integer): String; var i: Integer; begin result := ''; i := 0; while TabHWName[i].MNC < 999 do begin if MCC = TabHWName[i].MCC then begin result := TabHWName[i].Country; break; end; inc(i); end; end;
Delphi-Quellcode:
wobei die erste tut was sie soll, die 2 (und auch alle anderen Funktionen aber eine exception werfen)
function CountryCodeToMCC(CountryCode: String): Integer; cdecl; external 'ProviderDLL.dll';
function MCCToCountry(MCC: Integer): String; cdecl; external 'ProviderDLL.dll'; Zitat:
|
AW: Fehler beim DLL aufruf
Stimmt die Aufrufkonvention?
|
AW: Fehler beim DLL aufruf
Sollte bei stdcall crasht die DLL sofort
|
AW: Fehler beim DLL aufruf
Und? Wenn du schon so lustig mit Strings herumwirfst, benutzt du dann auch den korrekten Speichermanager damit sich die Strings aus deiner Anwendung und die aus der DLL auch miteinander vertragen?
|
AW: Fehler beim DLL aufruf
PCHAR oder Sharemem...
|
AW: Fehler beim DLL aufruf
Zitat:
PCHAR aber bitte nur mit Abzählen ;) ... ach und wenn wir schon wissen daß Delphi jetzt auch Unicode kann, sollten wir vielleicht explizit PAnsiChar oder PWideChar verwenden. |
AW: Fehler beim DLL aufruf
Was spricht gegen den WideString? Einen PChar muss man, wenn man in String umwandeln will immer explizit konvertieren (oder umgekehrt).
|
AW: Fehler beim DLL aufruf
Zitat:
Strings in Delphi basieren auf Compiler Magic ... entsprechend muß man dem Compiler die Möglichkeit geben diese "Zauberei" anzuwenden. Wenn Anwendung und DLL sich nicht den gleichen Speichermanager teilen, gibt's Probleme. Sollte eigentlich Grundwissen für jeden Delphianer sein. |
AW: Fehler beim DLL aufruf
WideStrings lassen sich ohne Probleme zischen DLLs hin und herschieben, auch ohne ShareMem. Ich verweise auf
![]() ![]() |
AW: Fehler beim DLL aufruf
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 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