Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Problema con un STRING

Hola a todos,

Mi aplicacion abre un cajón portamonedas, lo abre bien a través del comando
WriteLn(F, cadena), donde cadena es un string con el texto para abrir el cajón, en mi caso: #27+'p0'+#100+#0, y F es un fichero direccionado al LPT1.

De momento lo estoy abrieno de ésta forma: WriteLn(F, #27+'p0'+#100+#0)
porque como podeis ver, el estring contiene los caracteres # + ' entre otros, lo que me supone un problema, ya que lo que yo hago es que en el apartado de configuracion del programa el usuario me escribe la cadena y yo la paso a una variable para utilizarla en cualquier momento que quiera abrir el cajón, pero cuando la paso a la variable, Delphi me interpreta los símbolos y me da errores.

Alguna solucion?

Muchas gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 15-11-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Hay ciertos caracteres que no podrás ingresar en un TEdit común, yo te recomendaría que le hagas ingresar la cadena en hexadecimal o byte por byte.
No se si con "interpreta los símbolos" quieres decir que la cadena que esta pasando es: '#27+''p0''+#100+#0' en lugar de #27'p0'#100#0, porque si va a ser así. Si quieres que te ingrese una cadena con esa nomenclatura vas a tener que encargarte de parsearla y convertirla a su representación en ASCII.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 16-11-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Problema con STRING

Gracias por responder tan pronto...

Verás, la seqüencia de caracteres para enviar al LPT1 y así abrir el cajón portamonedas es la siguiente: #27+'p0'+#100+#0
Todo lo que está en negrita es lo que necesita para abrirlo, ni mas ni menos.
Lo que me encuentro es que al asignar mi variable global "cajon" de tipo String a ésta seqüencia el Delphi me da error, ya que interpreta cada comilla simple como un principio o final de cadena, y el resto "le sobra". O almenos eso es lo que yo entiendo.

Ayuda algo lo que he dicho ahora?

Muchas gracias.
Responder Con Cita
  #4  
Antiguo 16-11-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
prueba a poner lo sisguiente:

'#27+''p0''+#100+#0'

en lugar de una comilla pon dos juntas, delphi las interpretara como una

Creo q es esto lo q pides....
__________________
Hay 10 tipos de personas, las que entienden el código binario y las que no.

ww.clubdelphi.com/foros/guiaestilo.php
Responder Con Cita
  #5  
Antiguo 16-11-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por Tecnic2
Lo que me encuentro es que al asignar mi variable global "cajon" de tipo String a ésta seqüencia el Delphi me da error, ya que interpreta cada comilla simple como un principio o final de cadena, y el resto "le sobra".
¿Porqué no nos muestras el fragmento de código y el mensaje de error?

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 16-11-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Correccion del tema STRING

El problema exacto es el siguiente:

La seqüencia para abrir el cajón la tengo en un fichero .ini, el cual leo al abrir mi aplicacion y asigno a una variable de tipo String llamada "cajon".
Entonces, cuando quiero abrir el cajon a través del comando WriteLn(F, cajon), en lugar de abrirlo me imprime la seqüencia en la impresora; pero cuando pongo el comando WriteLn(F, #27+'p0'+#100+#0) abre el cajon sin problemas.

Puede ser problema de la variable de tipo String?

Nota: El cajon va a través de la impresora al puerto LPT1, al cual el fichero F está asignado.

Gracias.
Responder Con Cita
  #7  
Antiguo 17-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Al parecer Tecnic2 se resiste a poner el código, así que me aventuraré a contestar:

El problema no es de del tipo string, acabo de escribir tu cadena en un edit, pasarlo a una variable string y despues mostrarlo por pantalla y todo va bien.

Lo unico que intuyo, es que al enviar la cadena por el puerto, el último caracter lo tome como caracter nulo y sea interpretado, en lugar de tormarlo literalmente, y por tanto, la secuencia de apertura no es la correcta. ¿Divagaciones mias?

Intenta: WriteLn(F, cajon+#0) a ver que pasa

Otra cosa es que la cadena deba ser interpretada antes de enviarla. Sin usar la variable, estas escribiendo codigos de control no??

Saludos

Última edición por Lepe fecha: 17-11-2004 a las 11:57:15.
Responder Con Cita
  #8  
Antiguo 17-11-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Vuelvo a repetir:
Cita:
Empezado por delphi.com.ar
Si quieres que te ingrese una cadena con esa nomenclatura vas a tener que encargarte de parsearla y convertirla a su representación en ASCII.
Si el archivo INI es algo como:
Cita:
[LPT1]
CAJON=#27+'p0'+#100+#0
Te comento que si haces eso, esta mal, ya que lo que estas poniendo no es meramente un string sino código Delphi que alguien se tiene que encargar de Compilarlo o Interpretarlo.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 17-11-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Sigo sin entenderlo...

Necesito coger de un fichero .ini una cadena, la cual me abrirá el cajon portamodenas, para así, si el usuario lo desea, podrá cambiar de impressora sin problemas. Solo tendrá que modificar la cadena en las opcione del programa y listo.

Necesito una solucion, estoy bastante perdidillo.
Responder Con Cita
  #10  
Antiguo 19-11-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Thumbs up La solucion al fin!

Bueno, comentaros que al final hice una funcion que convertía los caracteres #27 en chr(27) y por lo tanto en un símbolo y finalmente funcionó.

Deciros que muchas gracias a todos por responder a mis cuestiones.

Hasta otra.
Responder Con Cita
  #11  
Antiguo 19-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Tecnic2
hice una funcion que convertía los caracteres #27 en chr(27)
A esto es a lo que se refería Federico. El símbolo # usado para especificar un caracter por su código ASCII sólo lo entiendo el compilador. Durante la ejecución, # deja de tener un sentido especial y se interpreta como cualquier otro caracter.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:29:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi