Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
1-1123213552
Viktop
2005-08-05 07:45
2005.08.28
Изменить высоту элемента в TreeView


8-1113384972
Fedor
2005-04-13 13:36
2005.08.28
Детектор движения


6-1115955679
XProger
2005-05-13 07:41
2005.08.28
Размеры заголовков TCP и UDP пакектов


1-1123580465
забыл
2005-08-09 13:41
2005.08.28
%windir% и прочие...


8-1113978635
SilenBlock
2005-04-20 10:30
2005.08.28
Помогите исправить ошибку в тексте!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский