|
Вопрос # 3 936/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Как определить объем видеопамяти?
|
Вопрос задал: seryoga (статус: 1-ый класс)
Вопрос отправлен: 26 марта 2010, 17:27
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Dron
Здравствуйте, seryoga!
Вот один из способов:
procedure TForm2.Button1Click(Sender: TObject);
var
lpDisplayDevice: TDisplayDevice;
dwFlags: DWORD;
cc: DWORD;
Memory: Real;
begin
Memo1.Clear;
lpDisplayDevice.cb := sizeof(lpDisplayDevice);
dwFlags := 0;
cc := 0;
while EnumDisplayDevices(nil, cc, lpDisplayDevice, dwFlags) do begin
Inc(cc);
Memo1.lines.add(lpDisplayDevice.DeviceString);
Memory:=(lpDisplaydevice.StateFlags div 524280);
Memo1.lines.add(FloatToStr(Memory));
end;
end;
Вторая строчка в Memo - как раз и есть объём памяти видеокарты.
|
Ответ отправил: Dron (статус: Студент)
Время отправки: 26 марта 2010, 18:34
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 27 марта 2010, 16:29; участников в обсуждении: 3.
|
seryoga (статус: 1-ый класс), 26 марта 2010, 18:50 [#1]:
Пробывал, у меня на машине стоит видеокарта NVIDIA RIVA TNT2/TNT2 Pro (32 Мб) а показывает 256
|
|
Вадим К (статус: Академик), 26 марта 2010, 19:01 [#2]:
подозрительный код. например константа 524280 ... вот если было бы 524288 ещё мог бы поверить.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 26 марта 2010, 19:07 [#3]:
Вообще насколько я понял lpDisplaydevice.StateFlags должно возвращать размер памяти в байтах следовательно делить нужно на 1024*1024 но все равно 128 получается
|
|
Dron (статус: Студент), 26 марта 2010, 20:17 [#4]:
Код написал не сам, так что вполне может быть, что он неверный. Просто у меня как раз 256 Мб - сошлось
С уважением.
|
|
Вадим К (статус: Академик), 27 марта 2010, 16:29 [#5]:
врядли поле с именем StateFlags будет содержать объем памяти. Тут скорее всего просто различные флаги состояния (например, поддержка 32битного цвета)
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|