Ainda sobre o controle de tempo de uso do meu sistema
14/12/2003
0
procedure TForm1.FormCreate(Sender: TObject);
var Data : TDatetime;
var dias : integer;
begin
Data := Date();
If data > StrToDate(´25/12/2003´) then
begin
showmessage(´mensagem de aviso´);
application.terminate;
end
else
begin
dias := strtodate(trunc(f_uso.t_uso[´datalimite´] - f_uso.T_uso[´datainicio´]));
showmessage(´faltam ´ + datetostr(Dias) + ´ Dias para o programa expirar´);
end;
[Error] Menu.pas(315): Incompatible types: ´String´ and ´Int64´
[Fatal Error] Locadora.dpr(23): Could not compile used unit ´Menu.pas´
Wagner
Posts
14/12/2003
Carlos Bernardo
nessa linha, voce declarou a variável ´Dias´, como inteiro, e quer transformá-la em string.....
analise melhor essa linha.......
14/12/2003
Wagner
essa ja foi uma dica que peguei no forum, sou iniciante, o que mudar para concertar esse erro?
Eu agradeco
wagnernormando@ig.com.br
15/12/2003
Maxymus
Por isso o erro de ´Impatible Types´
voce deveria mudar a variavel dias(integer) para string, pois você quer apenas mostar a data que foi calculada, ou seja, num vai fazer mais calculo com o campo.
Bota ela assim Dias:String[3];
que ai quando vc for transformar vai dar certo.
var Data : TDatetime;
var dias : integer;
dias := strtodate(trunc(f_uso.t_uso[´datalimite´] - f_uso.T_uso[´datainicio´]));
15/12/2003
Seccatto
showmessage(´faltam ´ + datetostr(Dias) + ´ Dias para o programa expirar´);
tenta fazer assim
showmessage(´faltam ´ + inttostr(Dias) + ´ Dias para o programa expirar´);
espero ter ajudado
20/12/2003
Wagner
Se coloco dessa forma: eliminando a linha em azul o programa entra dessa forma ´faltam 10434852 dias para o programa expirar´
Obs: fiz todas as tentantivas conforme as dicas mais nao deu certo a unica que chegou mais perto foi essa mais eu gostaria de uma comparação de datas e um retorno tipo ´faltam 15 dias para o .......´ o que eu ainda posso esta fazendo de errado, por favor me ajudem
var Data : TDatetime;
var Dias: integer;
begin
Data := Date();
If data > StrToDate(´25/12/2003´) then
begin
showmessage(´Contacte o programador responsavel´);
application.terminate;
end
else
begin
[color=blue:9c86b1d4cd]//dias := strtoint(trunc(f_uso.t_uso[´datalimite´] - f_uso.T_uso[/color:9c86b1d4cd][´datainicio´]));
showmessage(´faltam ´ + inttostr(Dias) + ´ Dias para o programa expirar´);
end;
21/12/2003
Carlos Bernardo
function DifDate(dataini,datafin:string):integer;
{Retorna a quantidade de dias entre duas datas}
var a,b,c:tdatetime;
ct,s:integer;
begin
if StrToDate(DataFin) < StrtoDate(DataIni) then
begin
Result := 0;
exit;
end;
ct := 0;
s := 1;
a := strtodate(dataFin);
b := strtodate(dataIni);
if a > b then
begin
c := a;
a := b;
b := c;
s := 1;
end;
a := a + 1;
while (dayofweek(a)<>7) and (a <= b) do
begin
if dayofweek(a) in [1..7] then
begin
inc(ct);
end;
a := a + 1;
end;
ct := ct + round((7*int((b-a)/7)));
a := a + (7*int((b-a)/7));
while a <= b do
begin
if dayofweek(a) in [1..7] then
begin
inc(ct);
end;
a := a + 1;
end;
if ct < 0 then
begin
ct := 0;
end;
result := s*ct;
end;
depois vc usa + ou - assim :
dias := difDate( f_uso.t_uso[´dataInicio´], f_uso.T_uso[´dataLimite´] ).
Obs:. Não esqueça q as datas terão q ser transformadas em String.....Como não sei como são seus campos não posso ajudar muito...., qqer dúvida entre em contato.....
21/12/2003
Wagner
:oops: Eu tinha na minha maquina, mais nao sei onde anda mais, alguma coisa sobre como colocar um função no meu projeto, como sou iniciante nao entendo muito bem isso, pode me da uma passo-a-passo de como colocar essa função no meu projeto :lol: eu agradeço muito
Feliz Natal
wagnenormando@ig.com.br
21/12/2003
Maxymus
meu e-mail é : maxymus@secrel.com.br
Até mais!!
21/12/2003
Edilcimar
dias : integer;
data : tdate;
if dias > strtodate(´25/12/2003´) then
showmessage(´o natal já passou, o presente não funciona mais´)
else
begin
dias := strtodate(´25/12/2003´) - date()
showmessage(´faltam ´ + inttostr(dias)´ + ´ dias para o programa expirar´)
end
21/12/2003
Wagner
dias : integer;
data : tdate;
begin
if dias > strtodate(´25/12/2003´) then
showmessage(´o natal já passou, o presente não funciona mais´)
else
begin
dias := strtodate(´25/12/2003´) - date()
showmessage(´faltam ´ + inttostr(dias)´ + ´ dias para o programa expirar´)
end;
end;
end.
[Error] Menu.pas(301): Unknown directive: ´dias´
[Error] Menu.pas(306): Undeclared identifier: ´dias´
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(314): Statement expected, but expression of type ´String´ found
[Fatal Error] Locadora.dpr(24): Could not compile used unit ´Menu.pas´
21/12/2003
Fórum Vini
o bloco
dias : integer; data : tdate;
são as declarações de variáveis, portanto você tem que colocar [b:9ffee7d52e]var[/b:9ffee7d52e] antes. Acredito que nosso amigo edicimar pensou que você já soubesse disso, portanto não colocou a declaração.
var dias : integer; data : tdate;
Espero ter ajudado.
Vinicius.
21/12/2003
Wagner
var
dias : integer;
data : tdate;
begin
if dias > strtodate(´25/12/2003´) then
showmessage(´o natal já passou, o presente não funciona mais´)
else
begin
dias := strtodate(´25/12/2003´) - date()
showmessage(´faltam ´ + inttostr(dias)´ + ´ dias para o programa expirar´)
end;
end;
end.
[Error] Menu.pas(311): Incompatible types: ´Integer´ and ´Extended´
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(311): Missing operator or semicolon
[Error] Menu.pas(312): Statement expected, but expression of type ´String´ found
[Fatal Error] Locadora.dpr(24): Could not compile used unit ´Menu.pas´
21/12/2003
Fórum Vini
você esqueceu de colocar o ; nas linhas!
var dias : integer; data : tdate; begin if dias > strtodate(´25/12/2003´) then showmessage(´o natal já passou, o presente não funciona mais´);//faltou aqui else begin dias := strtodate(´25/12/2003´) - date() ; //aqui tbm showmessage(´faltam ´ + inttostr(dias)´ + ´ dias para o programa expirar´); //e aqui end; end;
Espero ter ajudado.
Vinicius.
21/12/2003
Wagner
var
dias : integer;
data : tdate;
begin
if dias > strtodate(´25/12/2003´) then
showmessage(´o natal já passou, o presente não funciona mais´);
else
begin
dias := strtodate(´25/12/2003´) - date();
showmessage(´faltam ´ + inttostr(dias)´ + ´ dias para o programa expirar´);
end;
end;
end.
[Error] Menu.pas(309): ´;´ not allowed before ´ELSE´
[Error] Menu.pas(311): Incompatible types: ´Integer´ and ´Extended´
[Error] Menu.pas(312): Missing operator or semicolon
[Error] Menu.pas(312): Missing operator or semicolon
[Error] Menu.pas(312): Missing operator or semicolon
[Error] Menu.pas(313): Statement expected, but expression of type ´String´ found
[Fatal Error] Locadora.dpr(24): Could not compile used unit ´Menu.pas´
21/12/2003
Fabio.hc
[b:ba9056db8f][Error] Menu.pas(311): Incompatible types: ´Integer´ and ´Extended´[/b:ba9056db8f]
Este erro é devido esta linha:
[b:ba9056db8f]dias := strtodate(´25/12/2003´) - date()[/b:ba9056db8f]
Uma solução é o seguinte:
var
dias : double;
e nesta linha:
showmessage(´faltam ´ +[b:ba9056db8f] floattostr[/b:ba9056db8f](dias)´ + ´ dias para o programa expirar´)
Com as alterações o código fica assim:
procedure TForm1.Button1Click(Sender: TObject); var dias : double; data : tdate; begin if dias > strtodate(´25/12/2003´) then showmessage(´o natal já passou, o presente não funciona mais´) else begin dias := strtodate(´25/12/2003´) - date(); showmessage(´faltam ´ + floattostr(dias) + ´ dias para o programa expirar´) end; end;
Clique aqui para fazer login e interagir na Comunidade :)