Announcement

Collapse
No announcement yet.

Falsche Datentypen beim Aufruf C DLL?

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

  • Falsche Datentypen beim Aufruf C DLL?

    Hallo,

    Ich habe so ein Problem. Ich muss einige Schnittstellenfunktionen verwenden. Sie sind in C geschrieben und in eine DLL gepackt. Ich weiss nur
    es so aussieht:
    extern "C" _stdcall Load(LPCTSTR lpszFile)
    Die *.dll habe ich in c:\winnt\system32 kopiert und in meinem Program so das eingebunden:
    ...
    implementation
    procedure Load(lpszFile: PChar); stdcall; external 'LfeDll.dll';
    ....
    dann Aufruf:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Load(PChar('c:\test.lfe'));
    end;

    dann kommt die Fehlermeldung: "Im Projekt ist eine Exception der Klasse EExternalException aufgetreten. Meldung: 'Externe Exception E06D7363'. Prozess wurde angehalten."

    Was mache ich falsch?
    Danke.

  • #2
    Sieht soweit in Ordnung aus. Existert 'c:\test.lfe'

    Comment


    • #3
      Ja, es existiert.
      Ich habe andere Funktionen aus der DLL verwendet. Alle funktionieren, nur mit dem Datentyp LPCTSTR habe ich Probleme. Die Umwandlung in PChar in Delphi ruft die Fehlermeldungen auf.

      Danke

      Comment


      • #4
        Probier mal PWideChar.<br>
        LPCTSTR bedeutet:<br>
        L = Long veraltet bezieht sich auf 32 bit Zeiger<br>
        P = Pointer<br>
        C = const der Zeiger wird in der Funkiton nicht geaendert<br>
        T = text je nach OS Char oder WideChar<br>
        STR = C strin

        Comment


        • #5
          probier mal

          <pre>

          procedure LoadTest(const FileName: String);
          var
          Temp: String;
          begin
          SetLength(Temp, 1024);
          Move(FileName[1], Temp[1], Length(FileName) +1);<br>

          Load(PChar(Temp));<br>

          SetLength(Temp, Length(FileName));
          Assert(Temp = FileName, 'Load hat Inputstring widerrechtlich modifiziert !!');
          end;<br>

          </pre>

          Gruß Hage

          Comment

          Working...
          X