ShortDateFormat x Windows 7 - Erro
Estou fazendo uns testes com o Onguard para fazer a "proteção à pirataria" de um sistema meu. Logo ao executar o programa dá o seguinte erro: "no argument for format '%s' ". O erro dá numa linha de uma unit do componente, alinha é: S := ShortDateFormat; no seguinte trecho de codigo:
Dei uma fuçada na internet, e vi q o erro pode ser por causa do formato de data do Windows 7. Alguém sabe como posso resolver este problema, pra funcionar corretamente em qualquer S.O. ?
Desde já agradeço.
function OgFormatDate(Value : TDateTime) : string;
{convert date to string with 4-digit year and 2-digit month}
var
S : string;
begin
S := ShortDateFormat;
if Pos('yyyy', S) = 0 then
Insert('yy', S, Pos('yy', S));
if Pos('MMM', S) > 0 then
Delete(S, Pos('MMM', S), 1);
Result := FormatDateTime(S, Value)
end;Dei uma fuçada na internet, e vi q o erro pode ser por causa do formato de data do Windows 7. Alguém sabe como posso resolver este problema, pra funcionar corretamente em qualquer S.O. ?
Desde já agradeço.
Rodrigo Barra
Curtidas 0
Respostas
Marco Salles
03/11/2012
Estou fazendo uns testes com o Onguard para fazer a "proteção à pirataria" de um sistema meu. Logo ao executar o programa dá o seguinte erro: "no argument for format '%s' ". O erro dá numa linha de uma unit do componente, alinha é: S := ShortDateFormat; no seguinte trecho de codigo:
Acho o erro dificil de ser nesta linha ??? afinal ShortDateFormat é uma Variável do tipo string e vc pode atribuir o seu
conteudo a uma outra Variavel do mesmo tipo
È estranho vc testar
if Pos('MMM', S) > 0 then ?? é como se o mes tivesse tres digitos ??
Antes de excecutar esta função teste o valor de ShortDateFormat
showmessage(ShortDateFormat); // teste aqui
S := ShortDateFormat;
if Pos('yyyy', S) = 0 then
Insert('yy', S, Pos('yy', S));
if Pos('MMM', S) > 0 then
Delete(S, Pos('MMM', S), 1);
Result := FormatDateTime(S, Value);
e qual a lógica desta função ???
[]sds
GOSTEI 0
Rodrigo Barra
03/11/2012
Realmente o erro não deve ser neste trecho mesmo não. E este trecho não tem logica tb.
Só sei q quando tento compilar dá o erro: NO ARGUMENTE FOR FORMAT '%s'
E tudo q tem haver com data no componente dá este erro, não sei porque.
Só sei q quando tento compilar dá o erro: NO ARGUMENTE FOR FORMAT '%s'
E tudo q tem haver com data no componente dá este erro, não sei porque.
GOSTEI 0
Gilvanio Gonçalves
03/11/2012
Amigos o que o colega esta usando é um source codigo do ONGUARD.INC (guardian) OGUTIL.PAS 1.13
dentro deste source tem varios exemplos de rotinas, e esta que ele esta tentado utilizar é um função
que retorna data como string no valor do ano em 4 digitos e 0 mês em 2 digitos, função de formatação utilizada
para para uso de exibição de datas sem ter que modificar o date no windows
é isto!. Mas ele não entendeu a rotina acredito eu, pois tem que levar em conta que pra ela funcionar corretamente,
existe varias declrarações de constantes. tipos,units, etc, neste source ao uso do componente,
o erro não tem nada haver com o windows ser 7, e sim se é 32 ou 64 bits , pois o source code é para win32.
no entanto teriamos que avaliar como foi instalado o componente, com ele esta usando a function etc.
vejam o link deste source code, e verão a rotina que ele postou
este este erro acontece muito quando o valor da variavel esta vazia,sem valor!.
link:[url]http://www.bvbcode.com/code/8n7akm20-1593359[/url]
Abs.
dentro deste source tem varios exemplos de rotinas, e esta que ele esta tentado utilizar é um função
que retorna data como string no valor do ano em 4 digitos e 0 mês em 2 digitos, função de formatação utilizada
para para uso de exibição de datas sem ter que modificar o date no windows
é isto!. Mas ele não entendeu a rotina acredito eu, pois tem que levar em conta que pra ela funcionar corretamente,
existe varias declrarações de constantes. tipos,units, etc, neste source ao uso do componente,
o erro não tem nada haver com o windows ser 7, e sim se é 32 ou 64 bits , pois o source code é para win32.
no entanto teriamos que avaliar como foi instalado o componente, com ele esta usando a function etc.
vejam o link deste source code, e verão a rotina que ele postou
este este erro acontece muito quando o valor da variavel esta vazia,sem valor!.
link:[url]http://www.bvbcode.com/code/8n7akm20-1593359[/url]
Abs.
GOSTEI 0
Marco Salles
03/11/2012
pois é eu não vi erro nenhum na rotina e nen entendi a lógica
deve ser isto então
[]sds
deve ser isto então
[]sds
GOSTEI 0
Rodrigo Barra
03/11/2012
O Gilvanio foi perfeito na sua colocação. È isto mesmo. Não sabia que este componente só funciona em versões 32 bits. (claro q modificando funciona em 64), mas como fazer funcioná-lo em 64 bits?
Estou fazendo uns exemplo que estão no manual,e como disse em todos exemplos que tem haver com DATA dá erro.
Eu inseri o componente OGDATECODE, após o implementation declarei a constante
Esta chave foi gerada no "modo gráfico do componente", seguindo o tutorial de exemplo.
No evento GetKey do componente inseri:
E por ultimo no evento OnChecked coloquei:
E ao compilar deu o erro descrito.
Estou fazendo uns exemplo que estão no manual,e como disse em todos exemplos que tem haver com DATA dá erro.
Eu inseri o componente OGDATECODE, após o implementation declarei a constante
const CKey : TKey = ($19,$E8,$54,$A3,$A8,$BD,$7A,$31,$D6,$B5,$F7,$F9,$40,$08,$46,$20);
Esta chave foi gerada no "modo gráfico do componente", seguindo o tutorial de exemplo.
No evento GetKey do componente inseri:
GetKey
E por ultimo no evento OnChecked coloquei:
begin
case Status of
ogValidCode : ShowMessage('Código Inválido');
ogPastEndDate : ShowMessage('Data expirou');
ogInvalidCode : ShowMessage('Codigo invalido');
end;
if Status <> ogValidCode then
Application.Terminate;
end;E ao compilar deu o erro descrito.
GOSTEI 0
Rodrigo Barra
03/11/2012
O Gilvanio foi perfeito na sua colocação. È isto mesmo. Não sabia que este componente só funciona em versões 32 bits. (claro q modificando funciona em 64), mas como fazer funcioná-lo em 64 bits?
Estou fazendo uns exemplo que estão no manual,e como disse em todos exemplos que tem haver com DATA dá erro.
Eu inseri o componente OGDATECODE, após o implementation declarei a constante
Esta chave foi gerada no "modo gráfico do componente", seguindo o tutorial de exemplo.
No evento GetKey do componente inseri:
E por ultimo no evento OnChecked coloquei:
E ao compilar deu o erro descrito.
Estou fazendo uns exemplo que estão no manual,e como disse em todos exemplos que tem haver com DATA dá erro.
Eu inseri o componente OGDATECODE, após o implementation declarei a constante
const CKey : TKey = ($19,$E8,$54,$A3,$A8,$BD,$7A,$31,$D6,$B5,$F7,$F9,$40,$08,$46,$20);
Esta chave foi gerada no "modo gráfico do componente", seguindo o tutorial de exemplo.
No evento GetKey do componente inseri:
Key := CKey;
E por ultimo no evento OnChecked coloquei:
begin
case Status of
ogValidCode : ShowMessage('Código Inválido');
ogPastEndDate : ShowMessage('Data expirou');
ogInvalidCode : ShowMessage('Codigo invalido');
end;
if Status <> ogValidCode then
Application.Terminate;
end;E ao compilar deu o erro descrito.
GOSTEI 0