Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
qenzerok
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 85
#1

TMemoryStatus: показать в Label4 количество оперативки на компе

24.01.2015, 22:18. Просмотров 1363. Ответов 17
Метки нет (Все метки)

Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var
   var MS : TMemoryStatus;
 
begin
    GlobalMemoryStatus(MS);
    Label4.Caption:=(MS);
Надо что-бы Label4 показывало количество опертавки на компе
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2015, 22:18
Ответы с готовыми решениями:

Работа с TMemoryStatus
Здраствуйте. С помощью TMemoryStatus я вывожу ифомацию в Label: procedure...

Стираются картинки. ImageList1.Draw(Label4.Canvas,7,2,0,Enabled=True);
Приветствую всех! Есть некоторая проблема. На главной форме есть panel на...

Неисправность оперативки DDR3 в новом компе
У меня такая проблема. После сборки нового компа: AMD Athlon2 X2 250 3.0 GHz,...

16Гб оперативки или 8Гб оперативки + 128Гб SSD
не могу выбрать между двумя ноутбуками, подскажите пожалуйста как лучше 16Гб...

Возможно ли с клиента на основной системе в компе отправлять данные на сервер на вирт.машине в этом же компе?
я просто хочу проверить как у меня код клиента работает

17
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.01.2015, 22:35 #2
Компилятор же говорит в чем ошибка.
Он кому это говорит, спрашивается ?
0
FIL
Модератор
3416 / 2552 / 726
Регистрация: 19.09.2012
Сообщений: 7,922
24.01.2015, 23:19 #3
Строка 7 что делает?
0
northener
24.01.2015, 23:43
  #4

Не по теме:

Цитата Сообщение от FIL Посмотреть сообщение
Строка 7 что делает?
Символизирует подспудное желание ТС, чтобы жизнь была мёдом. :)

0
qenzerok
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 85
25.01.2015, 04:44  [ТС] #5
FIL, mss, northener, поможете может?
0
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.01.2015, 10:13 #6
qenzerok, страницу этой темы проматываем вниз - там раздел "похожие темы". И в этом разделе ссылка: Работа с TMemoryStatus
0
qenzerok
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 85
25.01.2015, 14:12  [ТС] #7
Mawrat, я смотрел , не получается.
реально сделать одной функцией , нету такого: GetMemoryStatus а потом просто вставить?

Добавлено через 46 минут
я теперь понял. Подскажите какой из этих параметров показыват весь обьем ОЗУ?
Delphi
1
2
3
4
5
6
7
8
 dwLength: DWORD;
    dwMemoryLoad: DWORD;
    dwTotalPhys: DWORD;
    dwAvailPhys: DWORD;
    dwTotalPageFile: DWORD;
    dwAvailPageFile: DWORD;
    dwTotalVirtual: DWORD;
    dwAvailVirtual: DWORD;
0
NT SERVICE
117 / 117 / 39
Регистрация: 27.01.2013
Сообщений: 471
25.01.2015, 14:14 #8
Лучший ответ Сообщение было отмечено qenzerok как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.btn1Click(Sender: TObject);
var
 ms : TMemoryStatus;
begin
   GlobalMemoryStatus(ms);
   lbl1.Caption:= FloatToStr(ms.dwTotalPhys / (1 shl 30)); //GB
                                                   //             (1 shl 20)//MB
                                                   //             (1 shl 10)//KB
end;
1
qenzerok
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 85
25.01.2015, 15:15  [ТС] #9
NT SERVICE, тестил на двох компах , на одном показало 2 гига , на другом тоже 2 , хотя на другом компе установлена оперативка: 4
0
FIL
Модератор
3416 / 2552 / 726
Регистрация: 19.09.2012
Сообщений: 7,922
25.01.2015, 15:56 #10
GlobalMemoryStatus устарела.
Сейчас надо использовать GlobalMemoryStatusEx.

Добавлено через 2 минуты
Пример:
http://stackoverflow.com/questions/4...memorystatusex
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25966 / 17410 / 6906
Регистрация: 22.10.2011
Сообщений: 30,649
Записей в блоге: 6
25.01.2015, 15:59 #11
qenzerok, под Win32 больше 2Гб не покажет. Для 64 бит - покажет все 4Гб, больше - через GlobalMemoryStatusEx
0
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.01.2015, 16:27 #12
Пример с GlobalMemoryStatusEx().
Сведения:
MSDN: GlobalMemoryStatusEx().
MSDN: структура MEMORYSTATUSEX.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
type
  //Структура MEMORYSTATUSEX.
  TMemoryStatusEx = packed record
    dwLength,
    dwMemoryLoad            : LongWord; //DWORD
    ullTotalPhys,
    ullAvailPhys,
    ullTotalPageFile,
    ullAvailPageFile,
    ullTotalVirtual,
    ullAvailVirtual,
    ullAvailExtendedVirtual : Int64; //DWORDLONG
  end;
 
//Импорт функции GlobalMemoryStatusEx().
function GlobalMemoryStatusEx(var lpBuffer : TMemoryStatusEx) : Bool; stdcall;
  external 'Kernel32.dll' name 'GlobalMemoryStatusEx';
 
//Пример вызова функции GlobalMemoryStatusEx().
procedure TForm1.Button1Click(Sender: TObject);
var
  Ms : TMemoryStatusEx;
  ErrCode : Integer;
begin
  Memo1.Lines.Add('------------------------------');
 
  Ms.dwLength := SizeOf(Ms);
  if not GlobalMemoryStatusEx(Ms) then
  begin
    ErrCode := GetLastError;
    Memo1.Lines.Add(
      'Ошибка!'
      + #13#10'  Код ошибки: ' + IntToStr(ErrCode)
      + #13#10'  Сообщение: ' + SysErrorMessage(ErrCode) );
    Exit;
  end;
 
  Memo1.Lines.Add(
    'dwLength = ' + IntToStr(Ms.dwLength)
    + #13#10'dwMemoryLoad = ' + IntToStr(Ms.dwMemoryLoad)
    + #13#10'ullTotalPhys = ' + IntToStr(Ms.ullTotalPhys)
    + #13#10'ullAvailPhys = ' + IntToStr(Ms.ullAvailPhys)
    + #13#10'ullTotalPageFile = ' + IntToStr(Ms.ullTotalPageFile)
    + #13#10'ullAvailPageFile = ' + IntToStr(Ms.ullAvailPageFile)
    + #13#10'ullTotalVirtual = ' + IntToStr(Ms.ullTotalVirtual)
    + #13#10'ullAvailVirtual = ' + IntToStr(Ms.ullAvailVirtual)
    + #13#10'ullAvailExtendedVirtual = ' + IntToStr(Ms.ullAvailExtendedVirtual) );
end;
0
qenzerok
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 85
26.01.2015, 03:13  [ТС] #13
Mawrat, надо подключать библиотеки или так работает?
0
northener
пофигист широкого профиля
3418 / 2318 / 630
Регистрация: 15.07.2013
Сообщений: 13,700
26.01.2015, 03:25 #14
Цитата Сообщение от qenzerok Посмотреть сообщение
надо подключать библиотеки или так работает?
Может сделаешь паузу и почитаешь наконец учебник?
0
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
26.01.2015, 08:15 #15
Цитата Сообщение от qenzerok Посмотреть сообщение
Mawrat, надо подключать библиотеки или так работает?
В коде подключение библиотеки выполняется на 16-й строке.
Delphi
15
16
17
//Импорт функции GlobalMemoryStatusEx().
function GlobalMemoryStatusEx(var lpBuffer : TMemoryStatusEx) : Bool; stdcall;
  external 'Kernel32.dll' name 'GlobalMemoryStatusEx';
Прикладываю архив с проектом. Delphi 7.
0
Вложения
Тип файла: 7z GlobalMemoryStatusEx-01.7z (155.2 Кб, 21 просмотров)
qenzerok
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 85
26.01.2015, 15:41  [ТС] #16
Mawrat, мне бы выполнить это действие без библиотек
0
mss
26.01.2015, 15:53
  #17

Не по теме:

Цитата Сообщение от qenzerok Посмотреть сообщение
мне бы выполнить это действие без библиотек
А ты пожалуйся на Майкрософт в Страсбург - почему, мол, меня обижают, заставляя возиться с библиотеками)

0
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
26.01.2015, 20:20 #18
Цитата Сообщение от qenzerok Посмотреть сообщение
Mawrat, мне бы выполнить это действие без библиотек
qenzerok, без библиотек не получится. Программа общается с операционной системой (ОС) через её прикладной интерфейс - API (Application Program Interface). Windows API представляет собой набор функций, которые содержатся в исполняемых файлах *.dll - библиотеках DLL (Dinamic Link Library). Чтобы воспользоваться этими функциями в программе выполняется подключение нужных DLL и импорт из них нужных функций.

Памятью управляет ОС. И чтобы получить сведения о состоянии памяти нужно воспользоваться нужной API функцией.
Например, если мы хотим использовать API функцию GlobalMemoryStatus(), то следует подключить библиотеку Kernel32.dll и импортировать из неё функцию GlobalMemoryStatus(). В Delphi 7 есть модуль Windows.pas, в котором уже проделаны такие действия. Поэтому для решения задачи надо подключить этот модуль:
Delphi
1
2
uses
  Windows;
Если мы решили использовать API функцию GlobalMemoryStatusEx(), то понадобится эта же DLL - Kernel32.dll. Но в Delphi 7 в модуле Windows.pas не импортирована нужная нам функция - GlobalMemoryStatusEx(). Поэтому такой импорт нужно выполнить самостоятельно. Это, как раз и сделано в следующем коде:
Delphi
1
2
3
//Импорт функции GlobalMemoryStatusEx().
function GlobalMemoryStatusEx(var lpBuffer : TMemoryStatusEx) : Bool; stdcall;
  external 'Kernel32.dll' name 'GlobalMemoryStatusEx';
0
26.01.2015, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2015, 20:20

Как узнать температуру, мощность процессора, название видеокарты и количество оперативки
Как узнать температуру, можность процессора, название видеокарты и кол-во...

Как работать на одном компе вдвоем, по сети с другого комьютера??? Один на Основном компе, а сдругой с ноутбука!
Итак! Есть один комп с XP и ноутбук тоже Xp стоит! они подключены по сетке...

Написать программу, которая проверяет, есть ли COM-порты на компе и количество откртых-закрытых
День добрый всем, и заранее спасибо, что откликнулись в теме. С# изучаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru