Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
Вниз
Импорт процедур и функций Найти похожие ветки
← →
wq (2009-02-11 20:21) [0]Мастера подскажите как правильно импортировать функции и процедуры.
Нужно импортировать GlobalMemoryStatus.
В MSDN описана какvoid GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer
);
Пытаюсь так
procedure GlobalMemoryStatus( var lpBuffer:TMEMORYSTATUS); stdcall; external "kernell32.dll";
Структура TMEMORYSTATUS переопределена в моем модуле. Думаю что дело в этомexternal "kernell32.dll"
.Поскажите где подробно почитать/посмотреть на эту тему.
← →
clickmaker © (2009-02-11 20:34) [1]ее не надо импортировать. Она уже есть: \Delphi\Source\Rtl\Win
← →
clickmaker © (2009-02-11 20:36) [2]> где подробно почитать/посмотреть на эту тему
Delphi Help, раздел External declarations
← →
wq (2009-02-11 20:46) [3]
> Она уже есть: \Delphi\Source\Rtl\Win
Да это понятно Windows.pas
> procedure GlobalMemoryStatus(var lpBuffer: TMemoryStatus);
> stdcall;
Ну а все таки как?
← →
Сергей М. © (2009-02-11 21:14) [4]
> все таки как?
Что "как" ?
В чем у тебя возникла проблема ?
← →
Джо © (2009-02-12 02:53) [5]
> Структура TMEMORYSTATUS переопределена в моем модуле
Ну, тогда переопределите ее под другим именем в вашем моделе.
← →
Джо © (2009-02-12 02:55) [6]Или же, если это чревато слишком трудоемкой работой, переопределите функцию GlobalMemoryStatus, чтобы она указывала на другое имя типа, который сами же тут же и опишите...
← →
Германн © (2009-02-12 03:20) [7]
> Джо ©
Разжевать забыл. :)
← →
wq (2009-02-12 18:18) [8]
> В чем у тебя возникла проблема ?
Вот код:
type
_MEMORYSTATUS = record
dwLength : DWORD;
dwMemoryLoad : DWORD;
dwTotalPhys : Int64;
dwAvailPhys : Int64;
dwTotalPageFile : Int64;
dwAvailPageFile : Int64;
dwTotalVirtual : Int64;
dwAvailVirtual : Int64;
end;
TMEMORYSTATUS = _MEMORYSTATUS;
procedure GlobalMemoryStatus( var lpBuffer:TMEMORYSTATUS); stdcall; external "kernell32.dll";
function mxGetMemoryInfo:TMEMORYSTATUS;
implementation
function mxGetMemoryInfo:TMEMORYSTATUS;
var
MS:TMEMORYSTATUS;
begin
MS.dwLength:=SizeOf(MS);
GlobalMemoryStatus(MS);
Result:=MS;
end;
При попытке его использовать получаю "Не удается найти kernel32.dll".
← →
clickmaker © (2009-02-12 18:19) [9]> "kernell32.dll"
"l" не лишняя?
← →
clickmaker © (2009-02-12 18:21) [10]кстати, о птичках
для int64 нужна GlobalMemoryStatusEx
← →
wq (2009-02-12 18:29) [11]
> для int64 нужна GlobalMemoryStatusEx
Спасибо смотрел уже в ее сторону. Т.е. GlobalMemoryStatus определяет память до 4 ГБ?
За kernell32.dll отдельный респект.
← →
clickmaker © (2009-02-12 18:38) [12]> GlobalMemoryStatus определяет память до 4 ГБ?
да
"On computers with more than 4 GB of memory, the MEMORYSTATUS structure can return incorrect information. Windows reports a value of -1 to indicate an overflow, while Windows NT reports a value that is the real amount of memory, modulo 4 GB"
← →
wq (2009-02-12 18:41) [13]clickmaker Спасибо!!! Вопрос закрыт
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c