Delphi -> java

14 respostas
Yago_Ernandes

Galera eu não tenho nenhuma experiência em DELPHI, e num aplicativo Java que estou fazendo precisa de uns comandos que eu não faço a mínima ideia de como fazer, entrei em contato com o suporte da empresa do terminal que estou usando e eles me passaram o seguinte código:

procedure TTerminalCustom.DisplayEnviar(sTexto: string); 
var 
  StrTemp: string; 
begin 
  case Protocolo of 
    tpVT100 : StrTemp := sTexto; 
    tpSTX   : StrTemp := #2'D' + sTexto + #3; 
  end; 
 
  if Assigned(Socket) then 
    Socket.SendText(StrTemp); 
end; 
 
procedure TTerminalCustom.DisplayLimpar; 
var 
  strTemp: string; 
begin 
  case Protocolo of 
    tpVT100 : strTemp := #27'[H'#27'[J'; 
    tpSTX   : strTemp := #2'L'#3; 
  end; 
 
  if Assigned(Socket) then 
    Socket.SendText(StrTemp); 
end;

eu queria saber qual o equivalente disso ai em java, principalmente nas linhas 06, 07, 19 e 20

Alguem pode me ajudar?

14 Respostas

B

27 (decimal) = 0x001B (hexadecimal)

Isto posto, você teria de usar:

private static final String ESC = "\u001B";
...
strTemp = ESC + "[H" + ESC + "[J";
...

EDIT - Aham, fiz a conta errado, 27 = 0x1B, não 1F

B

Note que depois do “\u” você tem de pôr EXATAMENTE 4 dígitos hexadecimais.

Yago_Ernandes

e esses [H e [J são char ou string?

GusMcCart

Bom, no pouco conhecimento que tenho… acredito que ficaria assim:

private static final String ESC = "\u001B";
private static final String STX = "\u0002";
private static final String ETX = "\u0003";

public void displayEnviar(String texto)
{
     String strTemp = "";
     switch(Protocolo)
     {
           case tpV100: 
                 strTemp = sTexto;
                 break;
           case tpSTX:
                 strTemp = STX + "D" + sTexto + ETX;
     }
     // ... Testa e envia pro terminal a informação
}

public void displayLimpar
{
     String strTemp = "";
     switch(Protocolo)
     {
           case tpV100: 
                 strTemp = ESC + "[H" + ESC + "[J"; 
                 break;
           case tpSTX:
                 strTemp = STX + "L" + ETX;
     }
     // ... Testa e envia pro terminal a informação
}

Mas testa ae, não manjo mto de Delphi mas acho que já ajuda… Quando der certo posta aí a solução.

E eu fui na onda… CTRL + C / CTRL + V no unicode do ESC…

Yago_Ernandes

esse código é o que faz limpar a tela do microterminal, no caso eu passaria um código hexadecimal e ele reconheceria?

GusMcCart

Você pergunta por causa dos “\u001F” ??

Isso é pq é caractere de controle, essa é apenas a representação do caractere em unicode…

Yago_Ernandes

olha, fazendo umas treta aqui, consegui mostrar o que esse código tá enviando, isso aí
[] = aquele quadradinho de caractere inválido, não sei escrever ele

Yago_Ernandes

o terminal ta inserindo o comando na tela ao invés de executar o comando referente…

GusMcCart

Posta o código aí, e modelo / marca desse terminal que talvez fica melhor pro pessoal te ajudar…

P

A representação do comando ESC que está incorreto!

GusMcCart
private static final char ESC = '\u001B';  
private static final char STX = '\u0002';  
private static final char ETX = '\u0003';

Tenta novamente assim…

B

Fiz a conta errado, é 1B, não 1F :frowning:

Yago_Ernandes

O marca do microterminal é WillTech, nesse site http://www.willtech.com.br/downloads/ tem os programas de emulação e servidor, da pra ter uma ideia…

Yago_Ernandes

Ah sim cara, eu não tinha tentado com 1B…

Agora funcionou… Muito obrigado, você me ajudou pacas

Criado 4 de julho de 2012
Ultima resposta 5 de jul. de 2012
Respostas 14
Participantes 4