![]() |
Passender Datentyp zu C-DLL
Moin Moin,
nachdem ich eine in C verfasste DLL eingebunden habe
Delphi-Quellcode:
function bColumbusCSV2FBGPS(cInputDatei, cOutputDatei: PChar; iAbtastRate: Integer): Boolean; external 'gpsmodul.dll';
bin ich nun am überlegen, wie ich die Parameter übergebe. Die Funktion ist in C wie folgt deklariert: Zitat:
Delphi-Quellcode:
Leider bringt der Aufruf der Funktion dann einen Fehler - die Strings werden nicht korrekt übergeben (die Funktion erzeugt ein Logfile, in dem auch die übernommenen Parameter auftauchen, und die sind Kauderwelsch). Offenbar kommen die PChar-Strings nicht richtig rüber.
StrPCopy(pcOutputFile,'"'+FBGPS_FileName+'"');
bColumbusCSV2FBGPS(pcInputFile, pcOutputFile, 1); Hat jemand eine Idee, was der passende Datentyp wäre? Ich hab' ja in meiner Verzeiflung schon versucht, einen Pointer auf pcInputFile zu übergeben :) gruß Hepdepaddel |
Re: Passender Datentyp zu C-DLL
Du solltest statt PChar lieber PAnsiChar verwenden. PChar ist seit Delphi 2009 kein PAnsiChar (also ein Pointer auf char wie in C) mehr sondern ein PWideChar (was einem Pointer auf wchar entspräche). PChar wäre also vergleichbar mit einem Pointer auf tchar aus Visual C++, die je nachdem ob Unicode aktiv ist entweder auf wide oder ansi chars basiert.
Wird (wenn die Angabe deiner verwendeten Delphi Version korrekt ist) dein Problem zwar nicht lösen, ist aber ein allgemeiner Hinweis. |
Re: Passender Datentyp zu C-DLL
Deklariere einen String und übergebe dann einen Poiter darauf an den Funktionsaufruf:
Delphi-Quellcode:
var
s: sInputDatei; ... bColumbusCSV2FBGPS(PChar(sInputDatei), ... |
Re: Passender Datentyp zu C-DLL
Danke für beide Hinweise. Habe nun mal ein PAnsiChar verwendet, um nicht später bei der Umstellung auf D2009 zu verzweifeln ;)
Zum Typcasting - ich nehme an, Du meintest
Delphi-Quellcode:
?
var
sInputDatei:String; ... bColumbusCSV2FBGPS(PChar(sInputDatei), ... Leider tut es das auch nicht. Auch die direkte Übergabe will nicht so recht:
Delphi-Quellcode:
Unglaublich - ein dämlicher String und ich bekomm das Ding nicht rüber :wall:
bColumbusCSV2FBGPS('TEST', ...
Gruß Hepdepaddel |
Re: Passender Datentyp zu C-DLL
Delphi-Quellcode:
?
bColumbusCSV2FBGPS(PAnsiChar(sInputDatei), ...
|
Re: Passender Datentyp zu C-DLL
Neee, der will nich' :gruebel:
|
Re: Passender Datentyp zu C-DLL
Mal gefragt, was bColumbusCSV2FBGPS() überhaupt macht... klingt nach Dateikonvertierung von CSV nach anderem Format, also als ob die Funktion mind. einen gültigen Dateinamen erwartet?
|
Re: Passender Datentyp zu C-DLL
Stimmt die Aufrufkonvention?
|
Re: Passender Datentyp zu C-DLL
Das ist richtig, die Datei konvertiert CSV in ein anderes Format. Sie schreibt dabei eine Logdatei und findet tatsächlich keine gültige CSV-Datei. In der Logdatei steht aber nun leider nicht
Zitat:
Zitat:
@Apollonius: Was genau meinst Du mit "Aufrufkonvention"? Gruß Hepdepaddel |
Re: Passender Datentyp zu C-DLL
Wenn es sich wirklich um Dateinamen handelt, müssen evtl. die Backslashes verdoppelt werden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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