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

Вниз

AV при вызове HeapAlloc   Найти похожие ветки 

 
USAtyj   (2001-12-21 12:56) [0]

Пишу длл, которая в зависимости от pcCommand выдает результат в pcResult. Вот код экспортируемой функции:

function ExecCommand(pcCommand : PChar; var pcResult : PChar) : integer; stdcall;
var
sResult: String;
begin
pcResult := HeapAlloc(GetProcessHeap(), 0, 1023 + 1);
if (pcResult = nil) then
EXIT;
............
StrPCopy(pcResult, sResult);
end;

Так вот на первой же строчке, где пытаюсь выделить память в "куче" вылетает AV. (...Write of adress 00000000.)

Спасибо.


 
Владислав   (2001-12-21 13:59) [1]

Этим кодом ты не память выделяешь а кучу.


 
Dimka Maslov   (2001-12-21 14:04) [2]

Выделяй необходимое количество памяти стандартными способами в вызывающей программе.

в вызывающей программе
var
Command, Result: string;
begin
Command:="Command";
SetString(Result, nil, 1024);
ExecCommand(PChar(Command), PChar(Result));
Result:=PChar(@Result[1]);
end;


в dll:
function ExecCommand(pcCommand, pcResult: PChar): Integer; stdcall;
var
sResult: string;
begin
.....
StrPCopy(pcResult, sResult);
end;


 
Владислав   (2001-12-21 14:05) [3]

Извини, ошибочка вышла. Проверяй что возвращает GetProcessHeap(). Может там NULL...


 
Digitman   (2001-12-21 15:16) [4]

проблема в передаче фактического параметра:

var pcResult : PChar

его адрес равен nil, вот и AV из за этого



 
USAtyj   (2001-12-21 15:50) [5]

Все спасибо за ответы...
Разобрался сам: ошибка была в описании функции в самой проге:
в DLL:
function ExecCommand(pcCommand : PChar; var pcResult : PChar) : integer; stdcall;
в проге:
function ExecCommand(pcCommand : PChar; pcResult : PChar) : integer; stdcall;



 
Digitman   (2001-12-21 16:10) [6]

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



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

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

Наверх





Память: 0.45 MB
Время: 0.003 c
7-28550
Eduard1
2001-09-28 14:04
2002.01.10
Hook - Help me


3-28403
Скалли
2001-12-07 10:23
2002.01.10
Редактирование поля типа Date (дата+время)


6-28524
Алексей Штыков
2001-10-16 14:38
2002.01.10
Как втихую проверить обновления (любые) с сервера.?


3-28436
macinsoft
2001-12-10 10:31
2002.01.10
Восстановление базы


1-28460
cahek2000
2001-12-21 08:40
2002.01.10
Как убрать(скрыть) горизонтальный скролбар(прокрутку) у TDBGrid-а?





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