AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Passender Datentyp zu C-DLL

Ein Thema von Hepdepaddel · begonnen am 2. Jul 2009 · letzter Beitrag vom 2. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#1

Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 16:11
Moin Moin,

nachdem ich eine in C verfasste DLL eingebunden habe

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:
bool bColumbusCSV2FBGPS( char *cInputDatei, char *cOutputDateiFBGPS, int iAbtastRate )
Es geht also um Pointer auf einen Typ char. Ich hätte das nun als Äquivalent zu den PChars in Delphi verstanden.

Delphi-Quellcode:
StrPCopy(pcOutputFile,'"'+FBGPS_FileName+'"');
bColumbusCSV2FBGPS(pcInputFile, pcOutputFile, 1);
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.

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
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 16:41
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.
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 16:42
Deklariere einen String und übergebe dann einen Poiter darauf an den Funktionsaufruf:

Delphi-Quellcode:
var
  s: sInputDatei;
...
  bColumbusCSV2FBGPS(PChar(sInputDatei), ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:22
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:

bColumbusCSV2FBGPS('TEST', ... Unglaublich - ein dämlicher String und ich bekomm das Ding nicht rüber

Gruß

Hepdepaddel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:27
bColumbusCSV2FBGPS(PAnsiChar(sInputDatei), ... ?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:34
Neee, der will nich'
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:38
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?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:44
Stimmt die Aufrufkonvention?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:47
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:
Fehler beim Lesen der Datei (TEST)...
sondern

Zitat:
Fehler beim Lesen der Datei (”ö)...
Sprich: Der Name "TEST" müsste eigentlich einen Fehler liefern (weil die Datei nicht existiert), aber "TEST" kommt nicht mal an. Mit einem richtigen Dateinamen funktioniert es auch nicht (das hatte ich zu Anfang probiert, im Moment bin ich auf "simple" Strings zurück).

@Apollonius: Was genau meinst Du mit "Aufrufkonvention"?

Gruß

Hepdepaddel
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: Passender Datentyp zu C-DLL

  Alt 2. Jul 2009, 17:48
Wenn es sich wirklich um Dateinamen handelt, müssen evtl. die Backslashes verdoppelt werden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz