Problema com VARIAVEL... PRECISO MUITO DE AJUDA !
Programa cliente envia :
rocedure TForm1.Timer1Timer(Sender: TObject);
var
i: integer;
begin
i:=0;
if SpeedButton1.Down=true then
i:=i+1;
if SpeedButton2.Down=true then
i:=i+2;
if SpeedButton3.Down=true then
i:=i+4;
if SpeedButton4.Down=true then
i:=i+8;
if SpeedButton5.Down=true then
i:=i+16;
if SpeedButton6.Down=true then
i:=i+32;
if SpeedButton7.Down=true then
i:=i+64;
if SpeedButton8.Down=true then
i:=i+128;
ClientSocket1.Socket.SendText(inttostr(i));
E o programa servidor recebe:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
comando: string;
begin
comando:= Socket.ReceiveText;
ParallelPort1.Data:= StrToInt (comando);
O problema é o seguinte, quando fico enviando dados direto para o servidor a partiri do cliente, chega uma hora que dá este erro: ... Is not a valid integer value, isto se deve pois ao servidor receber as integers, ele está confundindo, está juntando uma com outra.
GOSTARIA DE SABER se tem um jeito de fazer com que o servidor não confunda as integers.
RODRIGO!
rocedure TForm1.Timer1Timer(Sender: TObject);
var
i: integer;
begin
i:=0;
if SpeedButton1.Down=true then
i:=i+1;
if SpeedButton2.Down=true then
i:=i+2;
if SpeedButton3.Down=true then
i:=i+4;
if SpeedButton4.Down=true then
i:=i+8;
if SpeedButton5.Down=true then
i:=i+16;
if SpeedButton6.Down=true then
i:=i+32;
if SpeedButton7.Down=true then
i:=i+64;
if SpeedButton8.Down=true then
i:=i+128;
ClientSocket1.Socket.SendText(inttostr(i));
E o programa servidor recebe:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
comando: string;
begin
comando:= Socket.ReceiveText;
ParallelPort1.Data:= StrToInt (comando);
O problema é o seguinte, quando fico enviando dados direto para o servidor a partiri do cliente, chega uma hora que dá este erro: ... Is not a valid integer value, isto se deve pois ao servidor receber as integers, ele está confundindo, está juntando uma com outra.
GOSTARIA DE SABER se tem um jeito de fazer com que o servidor não confunda as integers.
RODRIGO!
Ropesca
Curtidas 0
Respostas
Rjanuzzi
15/07/2003
Olá ropesca,
Pelo que eu entendi, o erro sá acontece deposi que vc clica muitas vezes nos botões, ou seja, vc está aumentando cada vez mais o valor da variável i.
Será que vc não estourou a capacidade da integer.
Acho difícil, pois vc teria que clicar muito, mas de repente pode ser isso.
nesse caso vc pode usar o tipo Longint.
rjanuzzi
Pelo que eu entendi, o erro sá acontece deposi que vc clica muitas vezes nos botões, ou seja, vc está aumentando cada vez mais o valor da variável i.
Será que vc não estourou a capacidade da integer.
Acho difícil, pois vc teria que clicar muito, mas de repente pode ser isso.
nesse caso vc pode usar o tipo Longint.
rjanuzzi
GOSTEI 0
Kroki
15/07/2003
Declare a variavel fora do evento OnTimer (no inicio).
Não declare > I:integer;
Mas sim > I:byte;
if.......then i:=255;
if.......then i:=128;
Vc não precisa converter para Hex,o Delphi lê 128 ena paralela trata como $80,ou vc pode usar direto I:=$80 (128);
Não declare > I:integer;
Mas sim > I:byte;
if.......then i:=255;
if.......then i:=128;
Vc não precisa converter para Hex,o Delphi lê 128 ena paralela trata como $80,ou vc pode usar direto I:=$80 (128);
GOSTEI 0
Ropesca
15/07/2003
Olá ropesca,
Pelo que eu entendi, o erro sá acontece deposi que vc clica muitas vezes nos botões, ou seja, vc está aumentando cada vez mais o valor da variável i.
Será que vc não estourou a capacidade da integer.
Acho difícil, pois vc teria que clicar muito, mas de repente pode ser isso.
nesse caso vc pode usar o tipo Longint.
rjanuzzi
Isto mesmo, isso ocorre quando se clica bastante vezes.
Declare a variavel fora do evento OnTimer (no inicio).
Não declare > I:integer;
Mas sim > I:byte;
if.......then i:=255;
if.......then i:=128;
Vc não precisa converter para Hex,o Delphi lê 128 ena paralela trata como $80,ou vc pode usar direto I:=$80 (128);
Não entendi muito bem sua resposta, tendo em vista que é preciso somar o valor de cada botão acionado para aí sim poder calcular e mandar os bytes certos para a LPT.
GOSTEI 0
Kroki
15/07/2003
Explique melhor o programa.
Porque vc tem que somar os numeros?
Porque vc tem que usar o Timer nos botoes?
Porque vc tem que somar os numeros?
Porque vc tem que usar o Timer nos botoes?
GOSTEI 0
Demian Soares
15/07/2003
nao chega a ser complicado, como para vc basta o resultado sem quebra de decimais, ao inves de declarar a variavel como integer.. declare-a como var :double; os tipos double teem uma capacidade armazenagem de valores bem maior... tente apenas isso.
GOSTEI 0