Главная страница
    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.83 MB
Время: 0.023 c
4-28552
Dark_Dan
2001-10-28 16:17
2002.01.10
Хочется быть первым...


1-28506
Nikky F
2001-12-23 14:40
2002.01.10
Как


3-28411
dva
2001-12-08 00:27
2002.01.10
Vopros


3-28430
Alexandr
2001-12-07 08:58
2002.01.10
Базы данных и модемные соединения


1-28473
dimonf
2001-12-21 21:02
2002.01.10
Вопрос по MDI форме





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