Wywołanie funkcji z dll

0

Witam wszystkich.
Potrzebuję pomocy z wywołaniem funkcji z dll. Mianowicie: w dll mam funkcję:

 extern "C" __declspec(dllexport) int __cdecl save_results_10ts_25tv(char* save_status_str, char* db_user, char* db_pass, char* db_name, int repeat, char* start_time, char* end_time, char* wabco_number, char* serial_number, char* system_name, int test_status,
	int ts_1_nr, int ts_2_nr, int ts_3_nr, int ts_4_nr, int ts_5_nr, int ts_6_nr, int ts_7_nr, int ts_8_nr, int ts_9_nr, int ts_10_nr,
	int ts_1_status, int ts_2_status, int ts_3_status, int ts_4_status, int ts_5_status, int ts_6_status, int ts_7_status, int ts_8_status, int ts_9_status, int ts_10_status,
	int tv_1_tsnr, int tv_2_tsnr, int tv_3_tsnr, int tv_4_tsnr, int tv_5_tsnr, int tv_6_tsnr, int tv_7_tsnr, int tv_8_tsnr, int tv_9_tsnr, int tv_10_tsnr, int tv_11_tsnr, int tv_12_tsnr, int tv_13_tsnr, int tv_14_tsnr, int tv_15_tsnr, int tv_16_tsnr, int tv_17_tsnr, int tv_18_tsnr, int tv_19_tsnr, int tv_20_tsnr, int tv_21_tsnr, int tv_22_tsnr, int tv_23_tsnr, int tv_24_tsnr, int tv_25_tsnr,
	int tv_1_tvnr, int tv_2_tvnr, int tv_3_tvnr, int tv_4_tvnr, int tv_5_tvnr, int tv_6_tvnr, int tv_7_tvnr, int tv_8_tvnr, int tv_9_tvnr, int tv_10_tvnr, int tv_11_tvnr, int tv_12_tvnr, int tv_13_tvnr, int tv_14_tvnr, int tv_15_tvnr, int tv_16_tvnr, int tv_17_tvnr, int tv_18_tvnr, int tv_19_tvnr, int tv_20_tvnr, int tv_21_tvnr, int tv_22_tvnr, int tv_23_tvnr, int tv_24_tvnr, int tv_25_tvnr,
	int tv_1_status, int tv_2_status, int tv_3_status, int tv_4_status, int tv_5_status, int tv_6_status, int tv_7_status, int tv_8_status, int tv_9_status, int tv_10_status, int tv_11_status, int tv_12_status, int tv_13_status, int tv_14_status, int tv_15_status, int tv_16_status, int tv_17_status, int tv_18_status, int tv_19_status, int tv_20_status, int tv_21_status, int tv_22_status, int tv_23_status, int tv_24_status, int tv_25_status,
	double tv_1_result, double tv_2_result, double tv_3_result, double tv_4_result, double tv_5_result, double tv_6_result, double tv_7_result, double tv_8_result, double tv_9_result, double tv_10_result, double tv_11_result, double tv_12_result, double tv_13_result, double tv_14_result, double tv_15_result, double tv_16_result, double tv_17_result, double tv_18_result, double tv_19_result, double tv_20_result, double tv_21_result, double tv_22_result, double tv_23_result, double tv_24_result, double tv_25_result);

I tu moje pytanie: Wiem że muszę wywołać funkcję save_results_10ts_25tv lecz w jaki sposób mam to zrobić w delphi? Pytanie 2: Zmienna char to tylko jeden znak jak zrobić aby było to więcej znaków? Ponieważ w miejscu db_name potrzebuję 8 znaków.

Przepraszam że tak chaotycznie napisałem. Proszę o jakąkolwiek odpowiedź.

1

Wywal tą funkcje i napisz sensowną otrzymującą jeden parametr typu struktura struct params {struct { int nr,status; } ts[10]; struct { int nr,staus,result; } tv[25]; };

0

Niestety tego nie mogę zrobić. Jest to funkcja uniwersalna dla kilkudziesięciu różnych wpisów do bazy.
Poza tym dll pisała inna osoba i jakakolwiek zmiana nie wchodzi w grę niestety.

0

Tym bardziej.

0

Dll pisała inna osoba i jakakolwiek zmiana nie wchodzi w grę.

4
int abc(char *text,int value);
function abc(text:PAnsiChar;value:Integer):Integer;stdcall;
function abc; external 'abc.dll' name 'abc';

var text:String;
var value,ret:Integer;
ret=abc(PChar(text),value);
0

Dzięki za odpowiedź działa :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1