На главную страницу Версия-Т
VTSoft.ru

FoxPro и Chon100k.dll


RSS
FoxPro и Chon100k.dll, Использование DLL в FoxPro
 
1. При добавлении функцией cbAddSale("Товар",1,1,1), прочитать функцией cbGetSale(1,....) не получается, пишет что товар с таким номером не найден! (То же самое по заголовку и окончанию)
2. При добавлении трех и более позиций в чек и посылки данных функцией SendSales(), после вывода сообщения "Нажмите ФЦ-1-ВВ" и соответственно последовательного ввода данной последовательности, сообщение о вводе пропадает, на кассе по очереди происходит ввод позиций товара, а затем Е ОПРОС. Все виснет. Помогает только перезагрузка компютера. После чего выводится чек но без наименований товара.
Возможно ли что ваша библиотека не подходит к FoxPro?
 
Уточните, пожалуйста версию файла библиотеки и версию прошивки АМС-100К (можно посмотреть в респечатке теста ТПУ).
 
Версия библиотеки 1.0.7.32
Версия прошивки 1.0.0K
 
Цитата
Сергей пишет:
При добавлении функцией cbAddSale("Товар",1,1,1), прочитать функцией cbGetSale(1,....) не получается

Проверьте соответствие типов передаваемых в функции параметров. Используемый по умолчанию в FoxPro целочисленный тип данных имеет размер 16 бит или 32 бита? Соответствует ли тип данных, используемый при объявлении внешней функции принятому в Win32 по умолчанию, т.е. 32 бита? Наименование товара необходимо передавать как указатель на терминированную нулем строку. Какой тип данных используется у Вас при объявлении функции для передачи наименования? Посмотрите каким образом FoxPro хранит в памяти строки и обращается к ним.
 
Integer
Numeric value with no decimals
4 bytes
-2147483647 to 2147483647

Character
Alphanumeric text
1 byte per character to 254
Any characters

Строка хранится как есть..."ФФФФФ"
 
Каким образом (с передачей каких типов) объявлена внешняя функция cbAddSale? Очень похоже на то, что в библитеку передается не то, что нужно.
 
DECLARE INTEGER cbAddSale IN chon100k.dll STRING PChar,Double Price,Double Qty,Integer Section
 
Правильно ли я понимаю, что у Вас объявлен параметр с именем PChar типа STRING передаваемый по значению?
 
Да, но в FoxPro можно имена переменных вообще не указывать

DECLARE INTEGER cbAddSale IN chon100k.dll STRING ,DOUBLE ,DOUBLE ,INTEGER

Типы параметров могут быть только такими:
cParameterType Description

INTEGE 32-bit integer
SINGLE 32-bit floating point
DOUBLE 64-bit floating point
LONG 32-bit long integer
STRING Character string

 
Параметр наименования должен передаваться не по значению, а по ссылке, т.е. функция принимает не строку, а указатель (32-разрядное число) на расположение в памяти терминированной нулем строки.