Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
2-1234810092
vit
2009-02-16 21:48
2009.04.05
Блокировка портов.


15-1233920889
Маэстро
2009-02-06 14:48
2009.04.05
софтинку подскажите для учета трафика


2-1234349684
Elena
2009-02-11 13:54
2009.04.05
retError


10-1153589543
Andrey Kad.
2006-07-22 21:32
2009.04.05
Границы ячейки в Excel


15-1233817925
Slider007
2009-02-05 10:12
2009.04.05
С днем рождения ! 2 февраля 2009 понедельник




   Наверх