Страница 10 из 12 ПерваяПервая ... 6789101112 ПоследняяПоследняя
Показано с 91 по 100 из 118

Тема: DLL для FarCards. R-Keeper

  1. #91
    Новичок
    Регистрация
    28.06.2017
    Адрес
    Almaty
    Сообщений
    6
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    Спасибо , попробуем побороть, либо попробуем на дельфях )

  2. #92
    Новичок
    Регистрация
    28.06.2017
    Адрес
    Almaty
    Сообщений
    6
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    Все таки что то с приходящей структурой , у нас в скудной документации вот такая структура указана:

    Структура, на которую указывает Info:


    Word размер структуры = 1164 байт (это поле заполнено при вызове)


    Byte Карта существовала, но была удалена
    0 - нет, и сейчас есть
    1 - да, удалена


    Byte Карту надо изъять
    0 - нет
    1 - да


    Byte Истек срок действия
    0 - нет
    1 - да


    Byte Сейчас карта не действует
    0 - нет, действует
    1 - да, не действует


    Byte Нужно ли подтверждение менеджера
    0 - не нужно
    1 - нужно


    Byte Карта заблокирована
    0 - нет
    1 - да
    256 байт Asciiz строка - причина блокировки карты - будет показана на кассе


    40 байт Asciiz строка - имя владельца карты
    Int64 Идентификатор владельца карты
    DWORD Номер счета
    DWORD тип неплательщика
    Word номер бонуса
    Word номер скидки
    Int64 предельная сумма скидки, в копейках
    Int64 сумма, доступная для оплаты счета, в копейках
    Int64 сумма на карточном счете N 2, в копейках
    Int64 сумма на карточном счете N 3, в копейках
    Int64 сумма на карточном счете N 4, в копейках
    Int64 сумма на карточном счете N 5, в копейках
    Int64 сумма на карточном счете N 6, в копейках
    Int64 сумма на карточном счете N 7, в копейках
    Int64 сумма на карточном счете N 8, в копейках
    256 байт Asciiz - произвольная информация о карте
    256 байт Asciiz - информация для вывода на экран кассы
    256 байт Asciiz - информация для распечатки на принтере

    Версия RKeeper 6.109
    Версия Farcards 6.04

    Возможно ли , что эти версии не совместимы по протоколу передачи данных?

  3. #93
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    Все так. Все совместимо.

    Покажите что ли как у вас структура описана в коде...
    Ильин Александр, Компания "Соттос"
    г Новосибирск +7 (383) 373-96-98; +7 (909) 533-93-92; nsk@sottos.ru
    г Омск +7 (3812) 377-902; +7 (905) 098-92-06; abc@sottos.ru
    www.sottos.ru | vk.com/sottos | fb.com/sottosru
    Продажа и установка ПО R-Keeper, обучение, техническая поддержка 24/7

  4. #94
    Новичок
    Регистрация
    28.06.2017
    Адрес
    Almaty
    Сообщений
    6
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    вот наша структура

    Код:
    struct Info {
        //размер структуры = 1164 байт(это поле заполнено при вызове)
        WORD  size;
        //Удалена или нет
        BYTE  deleted;
        //0 - нет, и сейчас есть
        //1 - да, удалена
    
    
        //Карту надо изъять
        BYTE nedd_withdraw;
        //0 - нет
        //1 - да
    
    
        //Истек срок действия
        BYTE expired;
        //0 - нет
        //1 - да
    
    
        //Сейчас карта не действует
        BYTE not_valid;
        //0 - нет, действует
        //1 - да, не действует
    
    
        //Нужно ли подтверждение менеджера
        BYTE manager_confirm;
        //0 - не нужно
        //1 - нужно
    
    
        //Карта заблокирована
        BYTE blocked;
        //0 - нет
        //1 - да
    
    
    
    
        //256 байт    Asciiz строка - причина блокировки карты - будет показана на кассе
         char block_reason[256];
    
    
        //40 байт     Asciiz строка - имя владельца карты
         char card_owner[40];
    
    
        //Идентификатор владельца карты
        INT64 owner_id;
    
    
        //Номер счета
        DWORD account_number;
        //тип неплательщика
        DWORD not_pay_type;
    
    
        //номер бонуса
        WORD bounus_num;
    
    
        //номер скидки
        WORD discount_num;
    
    
        //предельная сумма скидки, в копейках
        INT64 max_discount;
    
    
        //сумма, доступная для оплаты счета, в копейках
        INT64  access_amount;
    
    
        //сумма на карточном счете N 2, в копейках
        INT64 acces_amount2;
    
    
        //сумма на карточном счете N 3, в копейках
        INT64 access_amount3;
    
    
        //сумма на карточном счете N 4, в копейках
        INT64 access_amount4;
    
    
        //сумма на карточном счете N 5, в копейках
        INT64 access_amount5;
    
    
        //сумма на карточном счете N 6, в копейках
        INT64 access_amount6;
    
    
        //сумма на карточном счете N 7, в копейках
        INT64 access_amount7;
    
    
        //сумма на карточном счете N 8, в копейках
        INT64 access_amount8;
    
    
        //256 байт    Asciiz - произвольная информация о карте
         char comment[256];
    
    
        //256 байт    Asciiz - информация для вывода на экран кассы
         char screen_comment[256];
    
    
        //256 байт    Asciiz - информация для распечатки на принтере
         char printer_comment[256];
    };

  5. #95
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    Код:
        WORD size;    2
        BYTE deleted;    1
        BYTE nedd_withdraw;    1
        BYTE expired;    1
        BYTE not_valid;    1
        BYTE manager_confirm;    1
        BYTE blocked;    1
        char block_reason[256];    256
        char card_owner[40];    40
        INT64 owner_id;    8
        DWORD account_number;    4
        DWORD not_pay_type;    4
        WORD bounus_num;    2
        WORD discount_num;    2
        INT64 max_discount;    8
        INT64 access_amount;    8
        INT64 acces_amount2;    8
        INT64 access_amount3;    8
        INT64 access_amount4;    8
        INT64 access_amount5;    8
        INT64 access_amount6;    8
        INT64 access_amount7;    8
        INT64 access_amount8;    8
        char comment[256];    256
        char screen_comment[256];    256
        char printer_comment[256];    256
    
    ИТОГО Байт    1164
    Вот размер структуры (в байтах) посчитанный для Дельфей. По итогу складываются нужные 1164 байта.
    SizeOf(Info) - у вас сколько покажет? Если не 1164, то тогда проверяйте каждый используемый тип (его длину) через SizeOf().

    Си под рукой нету, поэтому сказать точно какой тип данных у вас не того размера не могу. Да еще и от компилятора зависит...
    Ильин Александр, Компания "Соттос"
    г Новосибирск +7 (383) 373-96-98; +7 (909) 533-93-92; nsk@sottos.ru
    г Омск +7 (3812) 377-902; +7 (905) 098-92-06; abc@sottos.ru
    www.sottos.ru | vk.com/sottos | fb.com/sottosru
    Продажа и установка ПО R-Keeper, обучение, техническая поддержка 24/7

  6. #96
    Разбирающийся
    Регистрация
    27.02.2017
    Адрес
    Москва
    Сообщений
    279
    Поблагодарил(а)
    8
    Благодарностей: 101 (сообщений: 66)
    В памяти структура выравнивается соответственно ваша структура 1168 используйте паковку.

  7. 1 пользователь сказал cпасибо SLion за это полезное сообщение::

    SH (02.07.2017)

  8. #97
    Разбирающийся
    Регистрация
    27.02.2017
    Адрес
    Москва
    Сообщений
    279
    Поблагодарил(а)
    8
    Благодарностей: 101 (сообщений: 66)
    ExtDll.7z
    Реализация в c++ builder

  9. 3 пользователей сказали cпасибо SLion за это полезное сообщение:

    SH (02.07.2017),sibgaba (02.07.2017),Денис Афанасьев (11.07.2017)

  10. #98
    Новичок
    Регистрация
    28.06.2017
    Адрес
    Almaty
    Сообщений
    6
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    Всем спасибо, да там была трабла со структурой походу и ошибка в одном из типов в методе, не тот тип аргумента ), мы это поправили, но родилась еще проблемка. Строковые переменные все норм приходят, а int-ы только старший байт что ли (тоесть приходит максимальная цифра инта ), хотя мы заполняем вменяемыми суммами.

    ---------- Добавлено в 14:22 ---------- Предыдущее сообщение было размещено в 12:24 ----------

    Теперь работаем с методом TransactionEx И начали понимать в каком типе у нас пролемы идут - Это тип DWORD , в дельфи видимо он другой по размеру , пытаемся его побороть. Каким типом его интерпритировать в C++ его ?

  11. #99
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    Ну в дельфи DWORD это 4 байта.
    Что под это подойдет в Си - вам виднее. Вы же на Си пишите...

    Хотя вон в примере Slion - тоже DWORD используется и вроде как ничего...
    Ильин Александр, Компания "Соттос"
    г Новосибирск +7 (383) 373-96-98; +7 (909) 533-93-92; nsk@sottos.ru
    г Омск +7 (3812) 377-902; +7 (905) 098-92-06; abc@sottos.ru
    www.sottos.ru | vk.com/sottos | fb.com/sottosru
    Продажа и установка ПО R-Keeper, обучение, техническая поддержка 24/7

  12. #100
    Новичок
    Регистрация
    11.07.2017
    Адрес
    Tver
    Сообщений
    1
    Поблагодарил(а)
    1
    Благодарностей: 0 (сообщений: 0)
    Специально зарегистрировался чтобы отблагодарить.
    СПАСИБО SLion за ExtDll!!!
    И Ильину Александру за намек с размером структуры!
    И Всем Форумчанам за внимание к данному вопросу!

Похожие темы

  1. Rk7 + Farcards 4.*
    от VampireKB в разделе Скидки и дисконтные системы в R-Keeper 7
    Ответов: 2
    Последнее сообщение: 26.09.2012, 22:53
  2. GetCardInfo и FarCards
    от Fromru в разделе Персональная Дисконтная Система (ПДС)
    Ответов: 2
    Последнее сообщение: 30.05.2011, 14:15
  3. FarCards ошибка
    от vgik в разделе Персональная Дисконтная Система (ПДС)
    Ответов: 4
    Последнее сообщение: 18.01.2010, 16:27

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •