Array
(
)

Versão do sistema...

Universodosoftware
   - 23 set 2004

Na propriedade de um projeto a gente pode controlar a versão do sistema. Gostaria de saber se é possível controlar a versão com apenas no formato do exemplo abaixo:

Atual: 2.0.0.1

Colocar no formato tipo: 2.0


Motta
   - 23 set 2004

Segue-se o padrão windows (version,minor version,release,build), o que vc pode fazer é só exibir até a minor, eu particularmente sigo o padrão pois é abrangente e cobre todos os casos possíveis de manutenção


Galodoido
   - 28 set 2004

Olá pessoal!

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?


Gandalf.nho
   - 28 set 2004

Eu uso um componente chamado EPInfo. Procure em http://www.chez.com/epedrazzi


Galodoido
   - 30 set 2004

Eu uso um componente chamado EPInfo. Procure em http://www.chez.com/epedrazzi

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.


Gandalf.nho
   - 30 set 2004

Desculpe, não sabia que o site não existia mais. Mas descolei um link pra pegar ele Torry´s http://www.torry.net/vcl/system/versioninfo/info.zip


Tpoeta
   - 16 fev 2005

Opa gente, gostaria quem me esclarececem uma dúvida, se possível...

É 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


Motta
   - 16 fev 2005

O comp. citado deve ter um método que retorna uma string com a versão.


Guilherme
   - 16 fev 2005

tenta getversion !!!!
mas nao sei como trasformar os dados em string


Gandalf.nho
   - 16 fev 2005

No caso do EPInfo eu faço assim para obter a versão:

#Código


EPInfoExe1.ExeName := Application.ExeName;
EPInfoExe1.Execute;
Label1.Caption := EPInfoExe1.FileVersion;



Lindomar.des
   - 16 fev 2005

Colega,

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:

include version information in project na aba Version info nas opções do projeto.

Espero ter ajudado.


Tpoeta
   - 17 fev 2005

Opa pessoal, obrigado pelas respostas todas. Acabei usando o seguinte código (achei aqui no fórum) para conseguir capturar a versão:

#Código


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:


Beppe
   - 17 fev 2005

Pesquisar é tudo...(a propósito...eu pesquisei e vi escrevi esta função em Nov/03) :lol:

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.

#Código


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;