Fórum Problema com VARIAVEL... PRECISO MUITO DE AJUDA ! #169546

15/07/2003

0

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!


Ropesca

Ropesca

Responder

Posts

16/07/2003

Rjanuzzi

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


Responder

Gostei + 0

16/07/2003

Kroki

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


Responder

Gostei + 0

16/07/2003

Ropesca

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.


Responder

Gostei + 0

16/07/2003

Kroki

Explique melhor o programa.
Porque vc tem que somar os numeros?
Porque vc tem que usar o Timer nos botoes?


Responder

Gostei + 0

16/07/2003

Demian Soares

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.


Responder

Gostei + 0

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

Aceitar