Fórum Colocar a versão no código fonte #382933

05/08/2010

0

Boa tarde   Como faço para colocar o número da versão no código fonte ??? Tipo se for lá em Project/options VERSION INFORM eu posso informar a versao tipo 1.0.0.0. Mas cada vez que liberar a versáo tenho que estar mudando.. Hoje na tela principal do programa eu coloco  a versão manualmente..  Ex: LinhaStatus.Panels[2].Text := 'Versão 1.0.0.0' ;   Eu quero que quando mudar a versáo lá em project options, na barra de status ele captura a versao que coloquei sem precisar mudar manualmente...   Trabalho com Delphi 2010     Fico no aguardo   Rogério          
Rogerio Santos

Rogerio Santos

Responder

Posts

05/08/2010

Marcos Iwazaki

Cria uma unit com esta estrutura...

unit LibGenU;

interface
type
  TAppGen = class
  public
    class function GetBuildInfo_Mascara(pAppName:string): string;
  end;
implementation

uses
  SysUtils, Windows, Forms;


class function TAppGen.GetBuildInfo_Mascara(pAppName:string): string;
// formata a BuildInfo em XX.XX.XX.XXX
var
  VerInfoSize: DWORD;
  VerInfo: Pointer;
  VerValueSize: DWORD;
  VerValue: PVSFixedFileInfo;
  Dummy: DWORD;
  V1, V2, V3, V4: Word;
  Prog: string;
begin
  Prog := pAppName;
  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 := FormatFloat('0',V1)  + '.' + FormatFloat('00',V2) + '.' + FormatFloat('00',V3) + '.' + FormatFloat('000',V4);
end; 
..
-----------------------------------------------------------------

como usar:
Primeiro faça um uses dessa lib que acabou de criar

LinhaStatus.Panels[2].Text := TAppGen.GetBuildInfo_Mascara('c:\MeuAplicativo.exe');
ou
LinhaStatus.Panels[2].Text := TAppGen.GetBuildInfo_Mascara(Application.ExeName);

espero ter ajudado
Responder

Gostei + 0

07/08/2010

Rogerio Santos

Bom dia   Obrigado por responder mas ainda nao testei o código.. Outra dúvida. Estou tendo um problema em um cadastro simples, pois percebo que simplesmente nao está gravando registros.   Para gravar faço assim no botao gravar   if dsEstado.State in [dsInsert,dsEdit] then
  begin
    with dmAuxiliar do
    begin
      CdsCadEstado.edit;
      CdsCadEstado.FieldByName('COD_USUARIO').AsInteger := unFuncao.icdUsuario;       if dmConexao.Verifica_campos_em_branco(dsEstado) then
      begin
        CdsCadEstado.Post;
        CdsCadEstado.applyupdates(-1);
        dmConexao.comit;
      end;
    end;
  end;   //Método comit   procedure TdmConexao.comit;
var Transacao : TTransactionDesc;
begin    try
      Transacao.TransactionID  := 1;
      Transacao.IsolationLevel := xilREPEATABLEREAD;       SqlConexao.StartTransaction(Transacao);
      SqlConexao.Connected := True;
      SqlConexao.Commit(Transacao);    except
      on Exc:Exception do
       begin
          ShowMessage('Erro no registro do banco: '+ Exc.Message);
          SqlConexao.Rollback(Transacao);
       end;
   end; end;     As vezes grava o registro e as vezes nao grava Já tirei os fields do ClientDataset e do sqlserver e adicionei novamente, mas nao funcionou...   Como COD_USUARIO é chave estrangeira entao na propriedade providerflags desabilitei as proprieadades pfinupdate, pfinupwhere colocando para falso   Estou usando a conexao dbxexpress e o Delphi 2010 + Firebird 2.1   Fico no aguardo   Rogério                
Responder

Gostei + 0

07/08/2010

Marco Salles

Utilize o evento onEnconcileError para ver a mensagem de erro Atraves dela fica mais fácil a solução
Responder

Gostei + 0

09/08/2010

Rogerio Santos

Olá   Quanto àquele código para obter a versão do programa que vc mostrou testei aqui e deu certinho, obrigado.. Quanto ao problema da gravaçao de registro, tirei os fielsd do sqldataset como do clientdataset, adicionei outra vez  e deu certo,.... Mas nao sei exatamente o que era.   Mas valeu, obrigado pela ajuda   Rogério
Responder

Gostei + 0

09/08/2010

Marco Salles

Olá   Quanto àquele código para obter a versão do programa que vc mostrou testei aqui e deu certinho, obrigado.. Quanto ao problema da gravaçao de registro, tirei os fielsd do sqldataset como do clientdataset, adicionei outra vez  e deu certo,.... Mas nao sei exatamente o que era.   Mas valeu, obrigado pela ajuda   Rogério
Provavelmente era configuração dos Providres Flags .. Tinha que mostrar a mensagem do erro do evento para maiores detalhes   Dê a Cezar o que é de Cezar o Codigo certinho da versão é do Socran
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar