Главная страница
    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.46 MB
Время: 0.004 c
15-1221537289
Slider007
2008-09-16 07:54
2008.11.09
С днем рождения ! 16 сентября 2008 вторник


8-1187527943
s7r
2007-08-19 16:52
2008.11.09
Программное изменения вида в TOpenDialog.


2-1222780763
S-Type
2008-09-30 17:19
2008.11.09
Переместиться на запись


2-1222522737
@!!ex
2008-09-27 17:38
2008.11.09
Помогите перевести с С


2-1222673282
JohnKorsh
2008-09-29 11:28
2008.11.09
Вопрос по компонентеам, работающим с сетью.





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