Fórum Não consigo entender este codigo #454591
09/09/2013
0
Boa tarde amigos
Este este código é de um exemplo de um microterminal com este codigo eu consigo dar a quantidade de passos que o usuário irá visualizar no DISPLAY originalmente
vêm 5 passos mas eu preciso reduzir para apenas 2 mas não estou sabendo a lógica deste codigo para mudar!
Var
display : array [1..10] of integer;
Begin
display[canal+1]:=display[canal+1]+1;
if display[canal+1]=5 then display [canal+1]:=1;
end;
end.
Então para manipular as mensagens ficaria assim
if display [canal+1]=3 then
Begin
envtsmg:=('TESTE');consigo
Este este código é de um exemplo de um microterminal com este codigo eu consigo dar a quantidade de passos que o usuário irá visualizar no DISPLAY originalmente
vêm 5 passos mas eu preciso reduzir para apenas 2 mas não estou sabendo a lógica deste codigo para mudar!
Var
display : array [1..10] of integer;
Begin
display[canal+1]:=display[canal+1]+1;
if display[canal+1]=5 then display [canal+1]:=1;
end;
end.
Então para manipular as mensagens ficaria assim
if display [canal+1]=3 then
Begin
envtsmg:=('TESTE');consigo
Fabio 2013
Curtir tópico
+ 0
Responder
Posts
09/09/2013
Deivison Melo
Por favor, coloque o código completo!!!
mas essa variável declarada é um array com 10 (dez) posições que vai do 1 ao 10...
O resto do código temos q visualizar para poder ajudar...
mas essa variável declarada é um array com 10 (dez) posições que vai do 1 ao 10...
O resto do código temos q visualizar para poder ajudar...
Responder
Gostei + 0
12/09/2013
Fabio 2013
Então a duvida é basicamente que estou enviando dados de um microterminal para o meu sistema esta dando certo até a parte da abertura pesquisa e inserção de nova comanda ou busca por um já existente.
O Erro: quando vou inserir os produtos não dá nenhuma erro no display mostra a mensagem PRODUTO no entanto quando vou ver no BD lá só está gravada a comanda mas não os produtos que inseri
Imagino que o código só esteja indo até a parte da comanda por alguma razão que eu ainda não sei se alguém puder da uma olhada se por acaso errei em alguma coisa tipo se coloquei ends demais ou algo assim.
desde já muito obrigado
Código:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 0 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then // getcnt é a function da DLL do terminal que ficará escutando tudo que vier após o then //
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=2 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end;
// ATÉ AQUI ESTA TUDO OK //
begin
if ted[canal+1]=3 then // A PARTIR DAQUI APESAR DE NÃO DAR NENHUM ERRO NÃO ENVIA NADA PARA O MICROTERMINAL //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
Begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=dado;
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1;
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end;
end; {rel ao for }
O Erro: quando vou inserir os produtos não dá nenhuma erro no display mostra a mensagem PRODUTO no entanto quando vou ver no BD lá só está gravada a comanda mas não os produtos que inseri
Imagino que o código só esteja indo até a parte da comanda por alguma razão que eu ainda não sei se alguém puder da uma olhada se por acaso errei em alguma coisa tipo se coloquei ends demais ou algo assim.
desde já muito obrigado
Código:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 0 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then // getcnt é a function da DLL do terminal que ficará escutando tudo que vier após o then //
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=2 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end;
// ATÉ AQUI ESTA TUDO OK //
begin
if ted[canal+1]=3 then // A PARTIR DAQUI APESAR DE NÃO DAR NENHUM ERRO NÃO ENVIA NADA PARA O MICROTERMINAL //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
Begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=dado;
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1;
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end;
end; {rel ao for }
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)