Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.05;
Скачать: CL | DM;

Вниз

Импорт процедур и функций   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
2-1234281938
Bolodya
2009-02-10 19:05
2009.04.05
использование GroupBar (RzGroupBar) в программе


2-1234510283
нуб
2009-02-13 10:31
2009.04.05
Чекбокс в DBGrid


2-1234525803
webbrowser
2009-02-13 14:50
2009.04.05
WebBrowser.OnDocumentComplite


1-1209392487
ZENsan
2008-04-28 18:21
2009.04.05
DesignIntf, DesignEditors...


11-1199030958
Efir
2007-12-30 19:09
2009.04.05
Библиотека KOLATL