Announcement

Collapse
No announcement yet.

Funktion in C-DLL in Delphi aufrufen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktion in C-DLL in Delphi aufrufen

    Hallo,

    ich habe hier ne C-DLL die ich in Delphi einbinden will. Folgende Funktion macht aber Probleme:

    <code>
    bool WINAPI calcBau (HED hInstanz, const char * pszZone, const char * pszBaut, const char * pszHeiz, const char * pszRand);
    </code>
    <br>
    Meine Übersetzung:
    <code>
    function CalcBau (EHandle:TEidHandle; pZone, pBaut, pHeiz, pRand:PChar):boolean; stdcall;
    </code>
    <br>
    Ich habe 2 Versionen der DLL, eine im Debug-Modus kompiliert, eine normal: Bei der im Debug Modus kommt eine Assertion mit der _CrtIsValidHeapPointer(pUserData).
    <br>

    Im "normalen" Modus kommt eine DLL-Interne Fehlermeldung nach der die Daten nicht vollständig an die DLL übertragen worden sind.
    <br>
    Wir stehen jetzt auf dem Schlauch! Wir haben schon versucht ein Array of Char zu übergeben und auch einen Pointer auf das Array - beides mal ist das Ding komplett abgeschmiert. Hat jemand ne Lösung für unser Problem?
    <br>
    Übrigends: Ich habe an die DLL schon kurze PChars übergeben können (an eine andere Funktion). Da gab es kein Problem!
    <br>
    Wolfgang

  • #2
    Hallo,

    Problem hat sich inzwischen erledigt! Schuld war der Typ von TEidHandle - wir hatten Word verwendet, richtig war aber LongWord.

    Aber wir haben jetzt noch eine Frage: WIe kann ich den Datentyp CHAR** von C in Delphi abbilden?

    Wolfgan

    Comment


    • #3
      Richtig ist

      function CalcBau (EHandle: TEidHandle; pZone, pBaut, pHeiz, pRand: PChar): BOOL; stdcall;

      Alternativ LongBool.

      Bei char ** gibt es zwei Interpretationen.
      Es kann ein "var Param: PChar" sein was bedeutet das dort ein PChar abgelegt wird.
      Ansonsten ist es

      type
      PPChar = ^PChar;

      und "Param: PPChar"

      Comment

      Working...
      X