![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Импорт процедур и функций [D7, XP]
wq © (2009-02-11 20:21:00)Мастера подскажите как правильно импортировать функциии процедуры.
Нужно импортировать GlobalMemoryStatus.
В MSDN описана как
void GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer
);
Пытаюсь так
procedure GlobalMemoryStatus( var lpBuffer:TMEMORYSTATUS); stdcall; external 'kernell32.dll';
Структура TMEMORYSTATUSпереопределена в моем модуле. Думаю что дело в этомexternal 'kernell32.dll'.Поскажите где подробно почитать/посмотреть на эту тему.
wq (2009-02-12 18:41:00) [1]clickmakerСпасибо!!! Вопрос закрыт
clickmaker (2009-02-12 18:38:00) [2]> 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:29:00) [3]
> для int64 нужна GlobalMemoryStatusEx
Спасибо смотрел уже в ее сторону. Т.е. GlobalMemoryStatus определяет память до 4 ГБ?
За kernell32.dll отдельный респект.
clickmaker (2009-02-12 18:21:00) [4]кстати, о птичках
для int64 нужна GlobalMemoryStatusEx
clickmaker (2009-02-12 18:19:00) [5]> 'kernell32.dll'
'l' не лишняя?
wq (2009-02-12 18:18:00) [6]
> В чем у тебя возникла проблема ?
Вот код:
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".
Германн (2009-02-12 03:20:00) [7]
> Джо ©
Разжевать забыл. :)
Джо (2009-02-12 02:55:00) [8]Или же, если это чревато слишком трудоемкой работой, переопределите функцию GlobalMemoryStatus, чтобы она указывала на другое имя типа, который сами же тут же и опишите...
Джо (2009-02-12 02:53:00) [9]
> Структура TMEMORYSTATUS переопределена в моем модуле
Ну, тогда переопределите ее под другим именем в вашем моделе.
Сергей М. (2009-02-11 21:14:00) [10]
> все таки как?
Что "как" ?
В чем у тебя возникла проблема ?
wq (2009-02-11 20:46:00) [11]
> Она уже есть: \Delphi\Source\Rtl\Win
Да это понятно Windows.pas
> procedure GlobalMemoryStatus(var lpBuffer: TMemoryStatus);
> stdcall;
Ну а все таки как?
clickmaker (2009-02-11 20:36:00) [12]> где подробно почитать/посмотреть на эту тему
Delphi Help, раздел External declarations
clickmaker (2009-02-11 20:34:00) [13]ее не надо импортировать. Она уже есть: \Delphi\Source\Rtl\Win