Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

массив структур в делфи   Найти похожие ветки 

 
littlebat   (2005-08-10 16:08) [0]

Возникал проблемма.
Есть запись

THoliday = record
Month, Day: integer;
end;


Есть динамический массив, содержащий эдлементы - holidays: array of THoliday;

Есть DLL написанная другим человеком на MS VS++.

Объявляю ее следующим образом:

function DefineSHoliday(var h:array of THoliday; error: array of char): integer; cdecl; external "serv4cuf.dll";


Далее вызываю ее в коде
res:=DefineSHoliday(holidays,errormess);

и как только оно пытается передать параметры, возвращает ошибку:
"raised exception class EAccesViolation with message "Access violation atadress 1001251D" in module "serv4cuf.dll""

что делать??????

пробовал так:
function DefineSHoliday(p: pointer; error: array of char)
- такая же ошибка.. в чем проблемма?! помогите! надо срочно!!


 
begin...end ©   (2005-08-10 16:13) [1]

Проверьте соответствие соглашений о вызовах в DLL и хост-приложении.


 
Digitman ©   (2005-08-10 16:23) [2]


> в чем проблемма?


в том что в среде MS VC++ нет никаких дин.массивов
а если и есть (будут), то их идеология/внутр.структура/механизм никак не соответствуют идеологии/внутр.структуре/механизму дин.массивов, предложенных Борландом в Делфи-среде.


> Объявляю ее следующим образом:
>
> function DefineSHoliday(var h:array of THoliday; error:
> array of char): integer; cdecl; external "serv4cuf.dll";


объявление - от балды ?

производитель dll так и сказал тебе, мол, параметры ф-ции DefineSHoliday() есть ничто иное как дин.массивы ?


 
littlebat   (2005-08-10 16:29) [3]

>>производитель dll так и сказал тебе, мол, параметры ф-ции DefineSHoliday() есть ничто иное как дин.массивы ?

да!! так и сказал! он за соседним компом сидит и сам не может понять в чем проблемма!


 
Digitman ©   (2005-08-10 16:35) [4]


> littlebat   (10.08.05 16:29) [3]


> да!! так и сказал! он за соседним компом сидит и сам не
> может понять в чем проблемма!


желаю руководству поскорей избавиться от такого "специалиста за соседним компом"

а тебе желаю перед тем как его уволят стребовать с него ПРОТОТИП этой ф-ции, дабы самому и ГРАМОТНО перевести его в Паскаль, убедившись что никакими дин.массивами там и не пахнет даже


 
begin...end ©   (2005-08-10 16:38) [5]

Точно, проглядел упоминание про C++...

Но тогда, вероятно, следует заменить динамические/открытые массивы на обычные типизированные указатели. Ну и не забыть про соответствие соглашений о вызовах.

В общем, без прототипа, конечно, не обойтись.


 
Digitman ©   (2005-08-10 16:41) [6]


> В общем, без прототипа, конечно, не обойтись


прототип - самое малое, без чего не обойтись !

по-хорошему же должно быть детальное описание параметров ф-ции : их типы, назначение (в соответствии с логикой ф-ции) и т.д. и т.п.



Страницы: 1 вся ветка

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.103 c
3-1121609139
Alex___________T
2005-07-17 18:05
2005.08.28
Подскажите плиз, как добавить поле в существующую базу Paradox


14-1122980764
NewWonder
2005-08-02 15:06
2005.08.28
Делюсь очень-оччень большой радостью!


14-1122965493
Игорь Шевченко
2005-08-02 10:51
2005.08.28
Наши программисты победили в Йокогаме


3-1121432901
Shama_n
2005-07-15 17:08
2005.08.28
LIKE в MySQL не дружит с параметрами?


6-1116052678
Chaser
2005-05-14 10:37
2005.08.28
Защита от автоматической регистрации сайтов