Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.006 c
2-1222849064
Игорь
2008-10-01 12:17
2008.11.09
Сортировка нескольких TStringList


6-1194876467
Иван_А
2007-11-12 17:07
2008.11.09
Как вытащить номер сокета из clientaddr


2-1222762898
neon-w
2008-09-30 12:21
2008.11.09
NAN????


6-1194920910
Net3
2007-11-13 05:28
2008.11.09
Научите, пожалуйста, скачивать файлы через прокси?


2-1222885028
MZG
2008-10-01 22:17
2008.11.09
Получить свойства полей таблицы




   Наверх