Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
ВнизПомогите перевести с С Найти похожие ветки
← →
@!!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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c