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

Вниз

Помогите перевести с С   Найти похожие ветки 

 
@!!ex ©   (2008-09-27 17:38) [0]

typedef void (__cdecl * PFUNCPLUGINCMD)();
typedef struct {
char _itemName[itemNameMaxLen];
PFUNCPLUGINCMD _pFunc;
int _cmdID;
bool _init2Check;
} FuncItem;


Сделал вот так вот(видимо неправильно):
 FUNCPLUGINCMD =procedure(); cdecl;
 PFUNCPLUGINCMD =^FUNCPLUGINCMD;

 TFuncItem = record
  _itemName:string[itemNameMaxLen];
  _pFunc:PFUNCPLUGINCMD;
  _cmdID:integer;
  _init2Check:BOOL;
 end;

 PFuncItem = ^TFuncItem;


 
Игорь Шевченко ©   (2008-09-27 17:46) [1]


>  PFUNCPLUGINCMD =^FUNCPLUGINCMD;


Это лишнее

объявление procedure(); cdecl и есть указатель


>   _itemName:string[itemNameMaxLen];


_itemName: array[1..itemNameMaxLen] или
_itemName: array[0..itemNameMaxLen1-]


>  _init2Check:BOOL;


скорее boolean - либо посмотри, чему в сишном компиляторе равен sizeof(bool)


 
@!!ex ©   (2008-09-27 17:56) [2]

ага.
сделал:
_itemName: array[0..itemNameMaxLen-1] of char;
или
_itemName: array[1..itemNameMaxLen] of char;
поведение одно и тоже.

если пишу(0 и 1 меняются на 1 и 2 во втором случае объявления массива):
 funcItem[0]._itemName[0]:= "o";
 funcItem[0]._itemName[1]:= #0;

 funcItem[1]._itemName[0]:= #0;
 funcItem[1]._itemName[1]:= #0;

 funcItem[2]._itemName[1]:= #0;


То все нормальной. первая функция добавляется в меню Notepad++ как значащая функция c именем "o", две других - как разделители менюшные.
Если же пишу:
 funcItem[0]._itemName[0]:= "o";
 funcItem[0]._itemName[1]:= #0;

 funcItem[1]._itemName[0]:= "o";
 funcItem[1]._itemName[1]:= #0;

 funcItem[2]._itemName[1]:= #0;

То Notepad++ падает...


 
Игорь Шевченко ©   (2008-09-27 18:20) [3]

слово packed перед record не решит проблемы ?


 
@!!ex ©   (2008-09-27 18:34) [4]

я пробовал... и нашел в чем проблема...
На ОФИЦИАЛЬНОМ сайте, лежит ОФИЦИАЛЬНОЕ сдк... нерабочее...
В примере СДК не хватает одной функции, и структура FuncItem на 4 байта больше...Дополнил структуру на эти 4 байта и все заработало.
Причем никак проверок на версию не делается. :(
Вот и падало все, потому что структура по размеру меньше...

P.S.
Спасибо за помощь! Особенно за совет по поводу BOOL.. Он 4 байта занимает, а bool только 1.


 
@!!ex ©   (2008-09-27 18:35) [5]

и структура FuncItem на 4 байта больше...
в СДК на 4 байта меньше. чем реально требуется.



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

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

Наверх




Память: 0.47 MB
Время: 0.007 c
8-1187527943
s7r
2007-08-19 16:52
2008.11.09
Программное изменения вида в TOpenDialog.


2-1222718387
Peter Sai4in
2008-09-29 23:59
2008.11.09
Delphi ошибается?


2-1222707635
@!!ex
2008-09-29 21:00
2008.11.09
Менеджмент мониторов


15-1221026764
oldman
2008-09-10 10:06
2008.11.09
Взлетит или не взлетит?


15-1221451319
Slider007
2008-09-15 08:01
2008.11.09
С днем рождения ! 15 сентября 2008 понедельник