Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » CBuilder - Использование сторонней DLL

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spike

Цитата:
в понедельник попробую.  
жаль аппарат домой взять нельзя

Не расслабляйся!
Возьми здесь "теплую" ссылку http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=2784&start=20#lt и почитай Рихтерa... Тебе очень поможет...

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 23:31 20-02-2004
spike



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
только хотел проверить новые ваши подсказки, как оказалось, что мой регистратор сломался
 
поэтому пока отдыхаю. но программа с ___stdcall, но ..... (см. выше)

Всего записей: 693 | Зарегистр. 23-10-2003 | Отправлено: 09:50 25-02-2004
spike



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это опять я, заработало, только возник ещё один вопрос-проблема.
 
есть в felix.h такой участок кода

Код:
typedef unsigned char byte;
typedef unsigned short int word;
typedef unsigned int cardinal;
 
//  Структура для получения состояния машины,
//  после выполнения последней команды
struct frfFelixStatus {
  byte ErrorCode;                 //  22.3  Результат выполнения команды
  byte HardStatus;                //  22.1  Постоянный статус машины
  word CurrentStatus;             //  22.2  Текущий статус машины
  byte PrinterStatus;             //  22.4  Состояние печатающего устройства
};
 
//      получить статус машины, возвращенный последней командой
int frfGetFelixStatus(HFelix H, frfFelixStatus* Status);
 
//      получить строку с объяснением ошибки по коду ошибки
int frfGetErrorString(HFelix H, byte ErrorCode, char* ErrorString);
 

 
я пробую получить

Код:
HFelix H;
frfFelixStatus* frfStatus;
H = frfInitTransport("COM1", "AERF", 0);
frfGetFelixStatus(H,frfStatus);
 

и в последней строке ругается когда я вызываю этот блок, сам компилятор не ругается
 
ошибка: ля-ля-ля Access Violation
может как-то надо дополнительно структуру определи в cpp файле ???

Всего записей: 693 | Зарегистр. 23-10-2003 | Отправлено: 10:19 25-03-2004
drobitko

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spike
Учите мат часть.  

Цитата:
HFelix H;  
frfFelixStatus* frfStatus;  
 

Указатель на frfFelixStatus объявил, а память под него не выделил.

Цитата:
 
H = frfInitTransport("COM1", "AERF", 0);  
frfGetFelixStatus(H,frfStatus);  

Передаешь указатель функции, а указатель указывает в никуда (или кокретнее туда где ничего хорошего или похошего на frfFelixStatus нет. Как правило функции API не выделяют за тебя память. Вот в этом и ошибка.
 
Соответственно поставь перед вызовом frfGetFelixStatus следующее:
 
frfStatus = calloc(sizeof(status));
 
или объяви frfStatus не указателем, а обычной перменной и привызове frfGetFelixStatus бери от нее указатель

Всего записей: 83 | Зарегистр. 10-02-2003 | Отправлено: 18:07 25-03-2004 | Исправлено: drobitko, 18:07 25-03-2004
spike



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на frfStatus = calloc(sizeof(status)); ругается что не знает что такое status
а при
HFelix H;  
frfFelixStatus frfStatus;
компилятор ругается на frfGetFelixStatus(H,frfStatus); пишет что не может конвертнуть
ссылку в переменную

Всего записей: 693 | Зарегистр. 23-10-2003 | Отправлено: 01:40 27-03-2004
drobitko

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
на frfStatus = calloc(sizeof(status)); ругается что не знает что такое status

 
Опечатка. должно быть sizeof(frfFelixStatus)

Цитата:
 
а при  
HFelix H;    
frfFelixStatus frfStatus;  
компилятор ругается на frfGetFelixStatus(H,frfStatus); пишет что не может конвертнуть  
ссылку в переменную

Так неплохл бы синтаксис языка уточнить. Функция frfGetFelixStatus требует указатель на переменную типа frfFelixStatus. А передается сама переменная. Правильно писать:
frfGetFelixStatus(H,&frfStatus);  
 

Всего записей: 83 | Зарегистр. 10-02-2003 | Отправлено: 12:10 29-03-2004
spike



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ок завтра поробую

Всего записей: 693 | Зарегистр. 23-10-2003 | Отправлено: 20:41 29-03-2004
spike



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
заработало frfGetFelixStatus(H,&frfStatus);
с выделением памяти, что-то не покатило.
 
ну да ладно. теперь уже надо выбить из создателя этого аппарата, что означают получаемые значения.
 
 
спасибо всем большое

Всего записей: 693 | Зарегистр. 23-10-2003 | Отправлено: 01:15 31-03-2004
drobitko

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дык всегда пожалуйста!
 
Будут вопросы пиши!
 
Хочу все-таки посоветовать просмотреть книги по программированию на C/C++ (особенно вопросы динамического выделения памяти) и почитать Рихтера о программировании под Win32.

Всего записей: 83 | Зарегистр. 10-02-2003 | Отправлено: 14:24 31-03-2004
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drobitko

Цитата:
Хочу все-таки посоветовать просмотреть книги по программированию на C/C++ (особенно вопросы динамического выделения памяти) и почитать Рихтера о программировании под Win32.

spike Я об этом тебе "говорил" здесь даже вверху этой страницы...
Успехов!

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 20:42 31-03-2004
Hetfild

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, такой вопрос:
 
Есть длл-ка, имена экспортируемых функций можно узнать tdump'ом, а каким образом получить весь прототип??? Мож какая-нить ещё утилитка есть?

Всего записей: 10 | Зарегистр. 17-07-2002 | Отправлено: 22:22 29-04-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » CBuilder - Использование сторонней DLL


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru