Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Прочитать версию файла

Delphi , Файловая система , Файлы

Прочитать версию файла

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function GetVersion: string;
 var
   VerInfoSize: DWORD;
   VerInfo: Pointer;
   VerValueSize: DWORD;
   VerValue: PVSFixedFileInfo;
   Dummy: DWORD;
 begin
   VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
   GetMem(VerInfo, VerInfoSize);
   GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
   VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
   with VerValue^ do
   begin
     Result := IntToStr(dwFileVersionMS shr 16);
     Result := Result + '.' + IntToStr(dwFileVersionMS and $FFFF);
     Result := Result + '.' + IntToStr(dwFileVersionLS shr 16);
     Result := Result + '.' + IntToStr(dwFileVersionLS and $FFFF);
   end;
   FreeMem(VerInfo, VerInfoSize);
 end;

 procedure Form1.Button1Click(Sender: TObject);
 begin
   label1.Caption := GetVersion;
 end;

Here is a translation of the text into Russian:

Это программное обеспечение Delphi, которое читает информацию о версии из файла и отображает ее в контроле Label на форме.

Рассмотрим, как работает код:

Функция GetVersion

Функция GetVersion принимает путь к файлу в качестве входного параметра (передается через параметр ParamStr(0)) и возвращает информацию о версии в виде строки. Вот что функция делает:

  1. Она использует функцию GetFileVersionInfoSize, чтобы получить размер информации о версии для указанного файла.
  2. Она выделяет память для информации о версии с помощью GetMem.
  3. Она вызывает функцию GetFileVersionInfo, чтобы получить информацию о версии из файла.
  4. Она использует функцию VerQueryValue, чтобы извлечь информацию о версии из полученных данных.
  5. Она извлекает номера версий (мажор, минор и ревизия) из извлеченной информации и строит строку в формате "X.Y.Z.W" (например, "1.2.3.4").
  6. Наконец, она освобождает выделившуюся память с помощью FreeMem.

Процедура Button1Click

Процедура Button1Click - это обработчик события кнопки на форме. Когда кнопка кликается, она вызывает функцию GetVersion с параметром пути к файлу (предположительно установленным в другом месте кода). Результатирующая строка версии присваивается свойству Caption контрола Label, именованного label1.

Предложения по улучшению кода

Вот несколько минимальных улучшений, которые вы можете сделать в коде:

  1. Считайте, что использование более описательных имен переменных, таких как FileVersionInfoSize вместо VerInfoSize.
  2. Вы можете упростить строительство строки версии, соединяя части с помощью оператора + вместо присваивания новой значения Result для каждой части.
  3. Вы могли бы добавить обработку ошибок для случаев, когда путь к файлу является недействительным или информация о версии не может быть получена.

Вот обновленная версия кода с этими предложениями:

function GetVersion(const filePath: string): string;
var
  FileVersionInfoSize: DWORD;
  FileVersionInfo: Pointer;
  VerValueSize: DWORD;
  VerValue: PVSFixedFileInfo;
  Dummy: DWORD;
begin
  FileVersionInfoSize := GetFileVersionInfoSize(PChar(filePath), Dummy);
  GetMem(FileVersionInfo, FileVersionInfoSize);
  GetFileVersionInfo(PChar(filePath), 0, FileVersionInfoSize, FileVersionInfo);
  VerQueryValue(FileVersionInfo, '\', Pointer(VerValue), VerValueSize);
  with VerValue^ do
  begin
    Result := IntToStr(dwFileVersionMS shr 16) + '.' +
      IntToStr(dwFileVersionMS and $FFFF) + '.' +
      IntToStr(dwFileVersionLS shr 16) + '.' +
      IntToStr(dwFileVersionLS and $FFFF);
  end;
  FreeMem(FileVersionInfo, FileVersionInfoSize);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Caption := GetVersion('путь/к/вашему/файлу.exe'); // обновите путь к файлу здесь
end;

Программа на языке Delphi, предназначенная для чтения версии файла и отображения ее в виде строки формата "x.y.z.w".


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:58:03/0.0036849975585938/0