модуль SystemInfo

Здравствуйте. Создаю новую тему, потому как та была для старта (Нужно бы её удалить, но я не знаю как :grinning:). Итак, я окончательно завершил сбор информации с реестра Windows (всё, что смог найти), добавил ещё один класс (PhysicalMemoryInformation) и в итоге получил готовый модуль. Огромная просьба к уважаемым разработчикам - пожалуйста, сообщите мне о том, включите вы его в стандартные или нет :slight_smile:. И если возможно, не меняйте стиль кода, пожалуйста, я старался:blush: В архиве лежат два исходника (“SystemInfo.pas” и “Tester.pas”) и файл моего лога (“MyLog_2017-11-09.txt”) (УСТАРЕЛА!)SystemInfo.rar (5,4 КБ) (OLD!) @Admin, не молчите, пожалуйста, мне уже страшно стало, что там совсем всё плохо :fearful:

Версия от 2017-11-21: SystemInfo_21.11.17.rar (6,7 КБ)

Исправил ошибку компиляции, подробнее описал в комментарии ниже )

У меня Tester выдаёт ошибку компилятора.

А ещё в реализациях методов не надо указывать имя класса.

RegKey := Registry.CurrentUser.OpenSubKey(ShellFolders_RegPath);
Result := RegKey.GetValue('Desktop').ToString;

вместо

ActiveUserInformation.RegKey := Registry.CurrentUser.OpenSubKey(ShellFolders_RegPath);
Result := ActiveUserInformation.RegKey.GetValue('Desktop').ToString;

Работает так же, а код всё же более читабелен получается.

Да, Tester почему-то падает

На счёт имени класса в реализациях, я просто думал, что если в обычных методах мы указываем 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.

В следующий раз пишите не мне а в issue :wink:

И хранить 2 версии тут нет смысла по моему…

Про issue огромное спасибо вам, я запомню. Про 2 версии, чисто для сравнения :slight_smile: