Главная страница
    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.004 c
1-28462
Anatoly Podgoretsky
2001-12-21 21:49
2002.01.10
Как хранить настройки программ - 1


1-28472
Delphig
2001-12-22 03:16
2002.01.10
Вот такая штука. Нужно чтобы при выборе в ListBox строчки....


4-28554
Игорь2
2001-11-08 23:47
2002.01.10
кодировка


14-28531
Burmistroff
2001-11-10 20:22
2002.01.10
Opera + delphi.mastak.ru?


1-28469
dimonf
2001-12-20 20:46
2002.01.10
Проблема с окнами MDIChild





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