Сейчас на форуме: bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Из СИ в Delphi
Посл.ответ Сообщение

Ранг: 37.7 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 09 марта 2006 20:03 · Поправил: IHateWindows
· Личное сообщение · #1

есть код, перевожу с си на Делфи:

...

type
{ Resources }

PIMAGE_RESOURCE_DIRECTORY = ^IMAGE_RESOURCE_DIRECTORY;
IMAGE_RESOURCE_DIRECTORY = packed record
Characteristics : DWORD;
TimeDateStamp : DWORD;
MajorVersion : WORD;
MinorVersion : WORD;
NumberOfNamedEntries : WORD;
NumberOfIdEntries : WORD;
end;

...

function readres(ird:IMAGE_RESOURCE_DIRECTORY):bool;
begin
end;

function error:integer;
var
ResBuffer: HGLOBAL;
rs:boolean;
begin
ТУТ БЫЛО НА СЯХ rs = readres((IMAGE_RESOURCE_DIRECTORY *)ResBuffer);

Как это перевести на делфи?


end;




Ранг: 39.4 (посетитель), 9thx
Активность: 0.01=0.01
Статус: Участник

Создано: 09 марта 2006 20:09 · Поправил: 2nd
· Личное сообщение · #2

на 1-ый вариант
rs := RebuildRsrc(PIMAGE_RESOURCE_DIRECTORY(ResBuffer));

на 2-ой вариант
rs := readres(PIMAGE_RESOURCE_DIRECTORY(ResBuffer));



Ранг: 37.7 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 09 марта 2006 21:29
· Личное сообщение · #3

2nd пишет:
rs := readres(PIMAGE_RESOURCE_DIRECTORY(ResBuffer));


[Error] main.pas(197): Incompatible types: 'IMAGE_RESOURCE_DIRECTORY' and 'PIMAGE_RESOURCE_DIRECTORY'



Ранг: 50.3 (постоянный), 2thx
Активность: 0.020
Статус: Участник

Создано: 09 марта 2006 21:35
· Личное сообщение · #4

rs := readres(IMAGE_RESOURCE_DIRECTORY(ResBuffer^));, если ResBuffer - pointer, иначе
rs := readres(IMAGE_RESOURCE_DIRECTORY(Pointer(ResBuffer)^));




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 09 марта 2006 23:07
· Личное сообщение · #5

IHateWindows пишет:
есть код, перевожу с си на Делфи


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

-----
[nice coder and reverser]




Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 09 марта 2006 23:33
· Личное сообщение · #6

Можно посмотреть проект Jedi
projectjedi.sourceforge.net/
jedi-apilib.sourceforge.net/
delphi-jedi.org/
заодно и
Dr Bob's Header Converter - C DLL Header Converter v4.20
www.drbob42.com/headconv
Dr Bob's header conversion articles
www.drbob42.com/delphi/headconv.htm
и ещё может этот.
Утилита для трансляции *.c и *.h файлов в *.pas модули.
www.astonshell.com/freeware/c2pas32/




Ранг: 39.4 (посетитель), 9thx
Активность: 0.01=0.01
Статус: Участник

Создано: 09 марта 2006 23:53 · Поправил: 2nd
· Личное сообщение · #7

function readres(ird:IMAGE_RESOURCE_DIRECTORY):bool;

по твоему переводу в нее передается тип IMAGE_RESOURCE_DIRECTORY
а по оригинальному вызову:
rs = readres((IMAGE_RESOURCE_DIRECTORY *)ResBuffer);
в нее передается (IMAGE_RESOURCE_DIRECTORY *) что соответствует PIMAGE_RESOURCE_DIRECTORY
нужно привести в соответствие реализацию и вызов.


 eXeL@B —› Программирование —› Из СИ в Delphi
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати