Versão do sistema...

23/09/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


Universodosoftware

Respostas

23/09/2004

Motta

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


Responder Citar

28/09/2004

Galodoido

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?


Responder Citar

28/09/2004

Gandalf.nho

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


Responder Citar

30/09/2004

Galodoido

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.


Responder Citar

30/09/2004

Gandalf.nho

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


Responder Citar

16/02/2005

Tpoeta

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


Responder Citar

16/02/2005

Motta

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


Responder Citar

16/02/2005

Guilherme

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


Responder Citar

16/02/2005

Gandalf.nho

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

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



Responder Citar

16/02/2005

Lindomar.des

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:

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

Espero ter ajudado.


Responder Citar

17/02/2005

Tpoeta

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

function GetFileVersion(const Filename: String): String; 
type 
  TVersionInfo = packed record 
    Dummy: array[0..7&93; 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´, &91;VersionInfo.V1, VersionInfo.V2, VersionInfo.V3, VersionInfo.V4&93;); 
    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:


Responder Citar

17/02/2005

Beppe

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.

function GetFileVersion(const Filename: String; Partes: Integer): String;
type
  TVersionInfo = packed record
    Dummy: array[0..7&93; of Byte;
    V: array&91;0..3&93; 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))&93;) + ´.´;
      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;



Responder Citar