Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

С сишки на делфи ...   Найти похожие ветки 

 
Alek ©   (2004-11-29 18:48) [0]

Помогиет пожалйста перевести код с сишки на делфи!

Код на сишке:

struct _HEADER {
unsigned short nAB;
unsigned int nSize;
unsigned short nMessage;
unsigned short nBA;
};
int GetResultEx(int nID, _HEADER **pstHeader, unsigned char nWait);

Код который я написал на делфи:

 _HEADER = record
      nAB: word;
      nSize: Longword;
      nMessage: word;
      nBA: word;
 end;

 _H = ^_HEADER;

function GetResultEx(nID: integer; pstHeader: _H; nWait: byte): integer;  stdcall;  external  "eV.dll";


и когда я из своей программы обращаюсь к этой функции то выскакивает ошибочка "Акце виолатион по адресу ABABABABAB"


 
palva ©   (2004-11-29 19:01) [1]

_H = ^^_HEADER; не знаю, можно ли такое на Делфи. Соответственно при вызове надо передавать адрес начала (первого элемента) массива пойнтеров на рекорды.


 
Alek ©   (2004-11-29 19:15) [2]

при вот таком _H = ^^_HEADER; делфи ругается (.

вызываю функцию так:

var
h: _H;
i: integer;
begin
 i:=GetResultEx(nID, h, 0);
end;


 
Anton_K ©   (2004-11-29 19:22) [3]

Я в С плохо разбираюсь, но рискну предположить, что надо так:
function GetResultEx(nID: integer; var pstHeader: _H; nWait: byte): integer;  stdcall;  external  "eV.dll";


 
Yuri K   (2004-11-29 19:23) [4]

"_H = ^^_HEADER;"

_H = ^_HEADER;
_PH = ^_H;


 
Yuri K   (2004-11-29 19:24) [5]

"var pstHeader: _H"

Годится.


 
Chlavik ©   (2004-11-29 20:07) [6]

Просто надо было там указатель на выделеную память !!!
var pstHeader: _H
begin
 GetResultEx(0,@pstHeader....
А ты   наверное var pstHeader: ^_H и прямо его в параметр совал тады надо New(pstHeader) а после вызова GetResultEx Dispose //


 
palva ©   (2004-11-29 21:40) [7]

В конце концов, этот параметр можно просто описать как Pointer (без всяких var). Главное, чтобы при обращении этот пойнтер имел правильное значение, то есть указывал на массив пойнтеров, каждый из которых указывает на _HEADER.


 
Alek ©   (2004-11-30 14:26) [8]

Еще тогда такой вопросик!

На сишке написано так:

OnQuote((_QUOTE_MSG *)pstHeader);

Как правильно написать на делфе? Мене тута сказали что на сишке это - приведение к типу "указатель на _QUOTE_MSG"



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.047 c
3-1100083717
denis24
2004-11-10 13:48
2004.12.12
групировка по полю memo,обьекта OLE в запросе


3-1100606263
lightix
2004-11-16 14:57
2004.12.12
Tquery и обновление данных


1-1101721431
Брат
2004-11-29 12:43
2004.12.12
Динамическое создание объекта


1-1101717384
kaktus
2004-11-29 11:36
2004.12.12
Как создать юникодовый файл?


1-1101646595
Vitiy
2004-11-28 15:56
2004.12.12
Глюк с перегруженными операторами !!!





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