Versão do sistema...
23/09/2004
0
Atual: 2.0.0.1
Colocar no formato tipo: 2.0
Universodosoftware
Posts
23/09/2004
Motta
28/09/2004
Galodoido
Já que o assunto é versão, alguém sabe como faço para extrair esta versão em tempo de execução do arquivo? Exibir na tela inicial por exemplo, sem precisar alterar. Através de uma função ou outra coisa parecida?
28/09/2004
Gandalf.nho
30/09/2004
Galodoido
gandalf.nho
Não Consigo acessar o site.
O componente é gratuito? Poderia enviá-lo para meu e-mail?
antonio@officeinformatica.com.br
Desde já, obrigado.
30/09/2004
Gandalf.nho
16/02/2005
Tpoeta
É que vi vários tópicos deste tipo por aqui, mas ainda não achei como eu faço pra colocar num LABEL.CAPTION por exemplo, a versão que está lá na informações do Delphi...
Alguém sabe? Só pode ser usando esse componente?
Obrigado
16/02/2005
Motta
16/02/2005
Guilherme
mas nao sei como trasformar os dados em string
16/02/2005
Gandalf.nho
EPInfoExe1.ExeName := Application.ExeName; EPInfoExe1.Execute; Label1.Caption := EPInfoExe1.FileVersion;
16/02/2005
Lindomar.des
Uso o seguinte código:
function Versao(aplicacao:string):string;
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
V1, V2, V3, V4: Word;
Prog : string;
begin
Prog := aplicacao;
VerInfoSize := GetFileVersionInfoSize(PChar(prog), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(prog), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, ´\´, Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
result := Copy (IntToStr (100 + v1), 3, 2) + ´.´ + Copy (IntToStr (100 + v2), 3, 2) + ´.´ + Copy (IntToStr (100 + v3), 3, 2) + ´.´ + Copy (IntToStr (100 + v4), length(inttostr(v4)),length(inttostr(v4)));
end;
Chamo da seguinte forma:
Label1.caption := Versao(Application.Exename);
obs.
para funcionar corretamente habilite a opção:
[b]include version information in project[/b] na aba [b]Version info[/b] nas opções do projeto.
Espero ter ajudado.
17/02/2005
Tpoeta
function GetFileVersion(const Filename: String): String; type TVersionInfo = packed record Dummy: array[0..7] of Byte; V2, V1, V4, V3: Word; end; var Zero, Size: Cardinal; Data: Pointer; VersionInfo: ^TVersionInfo; begin Size := GetFileVersionInfoSize(Pointer(Filename), Zero); if Size = 0 then Result := ´´ else begin GetMem(Data, Size); try GetFileVersionInfo(Pointer(Filename), 0, Size, Data); VerQueryValue(Data, ´\´, Pointer(VersionInfo), Size); Result := Format(´¬d.¬d.¬d.¬d´, [VersionInfo.V1, VersionInfo.V2, VersionInfo.V3, VersionInfo.V4]); finally FreeMem(Data); end; end; end; procedure TfrmSobre.FormShow(Sender: TObject); begin lblVersao.Caption := ´Versão: ´ + GetFileVersion(Application.ExeName); end;
talvez possa ser útil a mais alguém. :lol:
17/02/2005
Beppe
Eu modifiquei a função para que atendesse ao requisito do universodosoftware. Agora existe um parâmetro Partes que indica quantos campos da versão são necessários. No caso dele é 2.
function GetFileVersion(const Filename: String; Partes: Integer): String; type TVersionInfo = packed record Dummy: array[0..7] of Byte; V: array[0..3] of Word; // atenção: os campos são trocados dentro de um dword V2, V1, V4, V3: Word; end; var Zero, Size: Cardinal; Data: Pointer; VersionInfo: ^TVersionInfo; I: Integer; begin Result := ´´; Size := GetFileVersionInfoSize(Pointer(Filename), Zero); if Size > 0 then begin GetMem(Data, Size); try GetFileVersionInfo(Pointer(Filename), 0, Size, Data); VerQueryValue(Data, ´\´, Pointer(VersionInfo), Size); for I := 0 to Partes - 1 do Result := Result + IntToStr(VersionInfo.V[I and not 1 or Ord(not Odd(I))]) + ´.´; Delete(Result, Length(Result), 1); finally FreeMem(Data); end; end; end; procedure TForm1.FormCreate(Sender: TObject); var I: Integer; begin for I := 0 to 4 do Memo1.Lines.Add(GetFileVersion(Application.ExeName, I)); end;
Clique aqui para fazer login e interagir na Comunidade :)