delphi question

Автор azazell, 13:13, 07 декабря, 2009

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

azazell

Знаю, тут периодически спецы появляются.

вводная:
Есть СОФТ, который написан на дельфи. К этому софту можно писать плагины, использующие win32api и соответственно всю мощь системы сообщений windows. Я занимаюсь написанием такого плагина, но на си...

задача:
необходимо в сообщении передать указатель на структуру данных, которая в СОФТЕ распознаётся как record с тремя полями.

Вопрос:
при определении такой же структуры данных на си, следует ли ожидать, что порядок и размерность полей будет соблюдена? В частности, если учитывать что используются простые типы (Integer, PChar). Грубо говоря, вопрос в организации структур в дельфи. Каким образом структуры представляются в памяти при исполнении? Не бывает ли там служебных (невидимых) полей, совместимы ли типы Integer в паскале  и int в си, PChar и char*.

можно отмахиваться ссылками. А то все такие крутые статьи при поиске завалены под ворохом статей "дельфи и си для чайников". хрен разберешь где там чо.

exkam

чтобы сказать определенно - нужно видеть описание структуры

как я понимаю плагины пишутся в виде dll и вызовы описаны в stdcall (если не в stdcall, то только дельфевые dll могут быть - это связано с использованием менеджера памяти)

PChar - это строка с окончанием на символ #0, и, на сколько я помню, она совместима с char*

azazell

Вот структура:

    PWPModPostData = ^ TWPModPostData;
    TWPModPostData = record
       DataType: Integer;
       Data: PChar;
       Next: PWPModPostData;
    end;



exkam

да вроде бы все должно получиться, единственно я не помню точно, но для работы с СИ должно быть не = record , а = packed record

azazell

Цитата: Dumbo от 01:30, 09 декабря, 2009
да вроде бы все должно получиться, единственно я не помню точно, но для работы с СИ должно быть не = record , а = packed record
Хм.... а на что это влияет? Может ли это влиять скажем на тип HWND? Может ли он по разному представляться в памяти для Си и Дельфи?


exkam

#5
Цитата: azl от 11:24, 09 декабря, 2009
Хм.... а на что это влияет? Может ли это влиять скажем на тип HWND? Может ли он по разному представляться в памяти для Си и Дельфи?

в общем, Вася, если есть вопросы - пиши в аську




Данный форум не является СМИ в соответствии с Законом №2124-1.
Яндекс.Метрика