Главная страница
    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
3-28445
szap
2001-12-07 15:09
2002.01.10
Альтернатива TQuery


1-28450
grab
2001-12-21 18:21
2002.01.10
Текст из TEdit на одной форме в ячейки таблицы на другой форме


4-28551
Alibaba
2001-11-07 16:50
2002.01.10
Привет!


1-28494
Man In Red
2001-12-22 21:08
2002.01.10
Извините, но приходится еще раз задать этот вопрос, не получается все никак по нормальному сделать! Помогите пожалуйста!


3-28440
Сержик
2001-12-06 13:06
2002.01.10
Как узнать высоту frMemoView после подстановки в них данных





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