Здравствуйте. Создаю новую тему, потому как та была для старта (Нужно бы её удалить, но я не знаю как ). Итак, я окончательно завершил сбор информации с реестра Windows (всё, что смог найти), добавил ещё один класс (PhysicalMemoryInformation) и в итоге получил готовый модуль. Огромная просьба к уважаемым разработчикам - пожалуйста, сообщите мне о том, включите вы его в стандартные или нет . И если возможно, не меняйте стиль кода, пожалуйста, я старался:blush:
В архиве лежат два исходника (“SystemInfo.pas” и “Tester.pas”) и файл моего лога (“MyLog_2017-11-09.txt”)
(УСТАРЕЛА!)SystemInfo.rar (5,4 КБ) (OLD!)
@Admin, не молчите, пожалуйста, мне уже страшно стало, что там совсем всё плохо
На счёт имени класса в реализациях, я просто думал, что если в обычных методах мы указываем Self, то здесь тоже должны как-то обратится к классу при статическом методе. А с тестером, можно по конкретней, где падает и какую ошибку выбрасывает? (На всякий случай скажу(Но я ни на что не намекаю), тестер генерирует Log файл в текущей папке, но я знаю, что вы это знаете)
Вы для начала сами попробуйте а потом спрашивайте. А вообще надо было попробывать перед тем как нам посылать… В общем тестер и не компилируется. Пробуйте, ищите какой метод это делает, как искать это уже ваше дело.
Ага, я нашёл ошибку, в общем, именно на новых версиях компилятора (с того момента, когда были убраны TAB), при компиляции стал падать, сейчас буду выяснять, что его крашит, при этом сам модуль компилируется замечательно.
Я разобрался с той ошибкой. Исправленную версию можно скачать в описании статьи (SystemInfo_21.11.17.rar)
Новый компилятор ругался на цикл “foreach” для перебора элементов динамического массива переменных аргументов функции:
Вместо этого (строка №1336 и ей подобные)
foreach T: HardDriveType in types do
if (T.ToString = Drive.DriveType.ToString)
then
begin //5a
Result += (Drive.TotalSize / Power(2, 40));
break;
end; //5a
Вот это (на тех же строках)
for var Ti := 0 to types.Length - 1 do
if (Drive.DriveType.ToString = types[Ti].ToString)
then
begin //5a
Result += (Drive.TotalSize / Power(2, 40));
break;
end; //5a
Методы класса PhysicalMemoryInformation:
getAvailableSpace_GB, getAvailableSpace_MB, getAvailableSpace_TB, getTotalSize_GB, getTotalSize_MB, getTotalSize_TB.