FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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 |
#5
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
Sin resultado
A ver, os voy a poner el fragmento de código:
Recuerdo que la cadena para abrir el cajon es: #27+'p0'+#100+#0 var cajon : String; F : TextFile; Ini : TIniFile; begin Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI')); AssignFile(F, 'LPT1'); Rewrite(F); cajon := FicheroIni.ReadString('LPT1', 'CAJON', '-'); WriteLn(F, cajon); end; WriteLn no me abre el cajon, sino que me escribe el texto en la impresora. Gracias por vuestra paciencia |
#9
|
||||
|
||||
Vuelvo a repetir:
Cita:
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#10
|
|||
|
|||
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. |
#11
|
|||
|
|||
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. |
#12
|
||||
|
||||
Cita:
// Saludos |
|
|
|