Thema: Delphi Firebird Parallelbetrieb

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Parallelbetrieb

  Alt 5. Jan 2012, 18:58
Der ursprüngliche Code ist IIRC von tP, meinerseits nur modifiziert:
Delphi-Quellcode:
type
  TVersion = record
    dwHigh,
    dwLow: DWORD;
  end;

procedure GetFileVersion(const Filename: TFilename; out Version: TVersion);
var
  lpVerInfo: pointer;
  rVerValue: PVSFixedFileInfo;
  dwInfoSize: cardinal;
  dwValueSize: cardinal;
  dwDummy: cardinal;
  lpstrPath: pchar;
begin
  lpstrPath := PChar(Filename);
  dwInfoSize := GetFileVersionInfoSize(lpstrPath, dwDummy);
  if dwInfoSize = 0 then
    begin
      Version.dwHigh := 0;
      Version.dwLow := 0;
    end
  else
    begin
      GetMem(lpVerInfo, dwInfoSize);
      try
        GetFileVersionInfo(lpstrPath, 0, dwInfoSize, lpVerInfo);
        VerQueryValue(lpVerInfo, '\', pointer(rVerValue), dwValueSize);
        Version.dwHigh := rVerValue^.dwFileVersionMS;
        Version.dwLow := rVerValue^.dwFileVersionLS;
      finally
        FreeMem(lpVerInfo, dwInfoSize);
      end;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Version: TVersion;
begin
  //hartkodierter Dateiname kommt vom Testen
  GetFileVersion('C:\Windows\System32\fbclient.dll', Version);
  ShowMessage(Format('%d.%d.%d.%d', [Version.dwHigh shr 16,
    Version.dwHigh and $0000FFFF, Version.dwLow shr 16, Version.dwLow and $0000FFFF]));
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat