Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1222669916
vegarulez
2008-09-29 10:31
2008.11.09
вопрос про поток.


15-1221569168
oldman
2008-09-16 16:46
2008.11.09
Кто из Нижнего, помяните товарища.


11-1195302045
KOLBoss
2007-11-17 15:20
2008.11.09
Динамическое создание меню


6-1194968418
artkil
2007-11-13 18:40
2008.11.09
Прокси


2-1222780319
Alexei
2008-09-30 17:11
2008.11.09
Использование TADOTable





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский