Versão do sistema...

Delphi

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

Universodosoftware

Curtidas 0

Respostas

Motta

Motta

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


GOSTEI 0
Galodoido

Galodoido

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


GOSTEI 0
Gandalf.nho

Gandalf.nho

23/09/2004

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


GOSTEI 0
Galodoido

Galodoido

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


GOSTEI 0
Gandalf.nho

Gandalf.nho

23/09/2004

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]


GOSTEI 0
Tpoeta

Tpoeta

23/09/2004

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


GOSTEI 0
Motta

Motta

23/09/2004

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


GOSTEI 0
Guilherme

Guilherme

23/09/2004

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


GOSTEI 0
Gandalf.nho

Gandalf.nho

23/09/2004

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

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



GOSTEI 0
Lindomar.des

Lindomar.des

23/09/2004

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.


GOSTEI 0
Tpoeta

Tpoeta

23/09/2004

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] 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:


GOSTEI 0
Beppe

Beppe

23/09/2004

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] 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;



GOSTEI 0
POSTAR