Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem DLL aufruf (https://www.delphipraxis.net/151581-problem-dll-aufruf.html)

Gehstock 24. Mai 2010 02:17


Problem DLL aufruf
 
Delphi-Quellcode:
typedef int (*callback) (char channel, int deb, int size);
extern "C"
{
__declspec(dllexport)
int __cdecl   upload_bin_image
            (
               char      channel,
               int         deb,
               int         size,
               const char   *szFichier,
               int         write_sam_file,
               char      *resultat
            );
__declspec(dllexport)
int __cdecl   download_bin_image
            (
               char      channel,
               int         deb,
               int         size,
               int         offset,
               const char   *fichier,
               const char   *path,
               char      *resultat
            );
__declspec(dllexport)
int __cdecl   set_dll_parameter(char opt, unsigned int param);
__declspec(dllexport)
int __cdecl   boot_bin_target(char channel, const char *fichier_fls, char *resultat2, char *resultat);
__declspec(dllexport)
char *__cdecl get_dll_version();
__declspec(dllexport)
int __cdecl   open_comm_port
            (
               char         channel,
               const char      *szPort,
               const char      *szPort2,
               unsigned int   speed,
               char         *resultat
            );
__declspec(dllexport)
int __cdecl   close_comm_port(char channel, char *resultat);
__declspec(dllexport)
int __cdecl   force_target_reset(char channel, char, char, char, char, char *);
__declspec(dllexport)
int __cdecl   init_callback(callback fct);
hab ich mit

Delphi-Quellcode:
type
 callback = Integer;
 channel = Integer;
 deb = Integer;
 Size = Integer;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;



var
  Form1: TForm1;

implementation

{$R *.dfm}

Function upload_bin_image(Channel,deb,size : Integer; OutFile : String;
         write_sam_file : Integer; result1 : String):Integer; cdecl; external 'DownloadDll.dll';
Function download_bin_image(Channel,deb,size,Offset : Integer;
         InFile,Path : String; result1 : String):Integer; cdecl; external 'DownloadDll.dll';
Function set_dll_parameter(opt : String; param : Integer): Integer;
         cdecl; external 'DownloadDll.dll';
Function boot_bin_target(channel : Integer; flsFile, result2, result1 : String): Integer;
         cdecl; external 'DownloadDll.dll';
Function get_dll_version: String; cdecl; external 'DownloadDll.dll';
Function close_comm_port(channel : Integer; result1 : String): Integer;
         cdecl; external 'DownloadDll.dll';
Function open_comm_port(channel : Integer; Port1,Port2 : String; Speed : Integer; result1 : String): Integer;
         cdecl; external 'DownloadDll.dll';
übersetzt aber schon die Function get_dll_version gibt falsche werte aus

Tryer 24. Mai 2010 04:39

Re: Problem DLL aufruf
 
Ersetze String mal durch PChar.

Grüsse, Dirk

himitsu 24. Mai 2010 06:49

Re: Problem DLL aufruf
 
PAnsiChar ... besser gleich an Delphi 2009 oder Neueres denken.

Gehstock 24. Mai 2010 10:08

Re: Problem DLL aufruf
 
ok das passt erstmal aber hier ist noch ein Problem
Delphi-Quellcode:
int __cdecl  init_callback(callback fct);
was ist fct
und ist das
Delphi-Quellcode:
typedef int (*callback) (char channel, int deb, int size);
extern "C"
mit
Delphi-Quellcode:
type
callback = Integer;
channel = Char;
deb = Integer;
Size = Integer;
richtig Übersetzt

himitsu 24. Mai 2010 10:20

Re: Problem DLL aufruf
 
nee, ist vermutlich so
Delphi-Quellcode:
// int __cdecl  init_callback(callback fct);
function init_callback(fct: callback): Integer; cdecl;

// typedef int (*callback) (char channel, int deb, int size);
type callback = function(channel: Byte; deb, size: Integer): Integer; stdcall;

Gehstock 24. Mai 2010 10:24

Re: Problem DLL aufruf
 
Dankeschön


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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