Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 11:30   #1
sneksnek2006
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 13
По умолчанию Передача списка указателей (TList) как параметр в dll

Доброго времени суток!
Опять я за помощью к знатокам )).
Имеется программа написанная в Delphi5, которая работает с Dll. Переписал Dll на С++ (использ. С++Builder6).
Вот хэдер:

#ifdef __DLL__
# define DllUse __declspec(dllexport)
#else
# define DllUse __declspec(dllimport)
#endif
typedef int __fastcall (*TProgressProc) (int Count);
extern "C"{ DllUse int __stdcall SetTypeOfOma(void);
DllUse bool __stdcall isOMAPresent(void);
DllUse void __stdcall StartPermanentReset(void);
DllUse void __stdcall StopPermanentReset(void);
DllUse bool __stdcall InitOma(void);
DllUse void __stdcall DoneOma(void);
DllUse bool __stdcall ReadSpectr( TProgressProc ProgrProc,
bool Relay,
int Num,
int SumBy,
double ExpTime,
double DelayAfterFire,
double IVSDelay,
TList *Lst );
}
#endif

В функцию ReadSpectr передается список указателей, который в Delphi формируется так:
GetMem(P,Opt.Straightedge.PixelCoun t*2); //Opt.Straightedge.PixelCount = 3698
SList.Add(P);

В ReadSpectr происходит связь с устройством через параллельный порт и получение данных в буфер:
unsigned short SumBuffer[3698];
Затем из буфера данные записываются по указателю в память:
void CopyBuffer(unsigned short *dest)
{
for (int i = 0; i < PixelCount ; i++) *dest++ += SumBuffer[i];
}

В результате полученные данные программа должна отобразить на компоненте Chart в виде спектра.
Что в принципе и происходит, только после отображения графика вызывается исключение(стандартный обработчик заменен на свой). Сообщение имеет такой вид:
Изображения
Тип файла: jpg Безымянный.jpg (30.7 Кб, 37 просмотров)
sneksnek2006 вне форума Ответить с цитированием
Старый 28.10.2010, 11:33   #2
sneksnek2006
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 13
По умолчанию

Никак не могу понять в результате чего вызывается данное исключение?
sneksnek2006 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получение списка экспортируемых из dll wmzvov Помощь студентам 3 24.09.2010 19:28
Передача списка и combobox'а через indy udp xatrix Общие вопросы Delphi 2 18.07.2010 16:14
Урезать длину списка TList mutabor Общие вопросы Delphi 4 03.04.2010 12:22
Передача динамического массива как параметр ф-ции kurdt Общие вопросы Delphi 2 26.04.2009 17:35
передача объектов как параметров функций в Dll Umen Общие вопросы Delphi 9 12.11.2006 19:31