PDA

Ver la Versión Completa : [Componente] TextBox Multilinea y saltos de línea


Begoguay
5 de febrero de 2017, 22:02
Hola amigos foreros.

Tengo el siguiente problema: En un TextBox Multiline, pido un texto grande. Luego ese texto lo quiero llevar a una variable de PIC X(200). Al introducir el texto, si pulso 'ENTER', me pasa a la siguiente línea del TextBox, (que es lo que yo quiero), pero cuando el contenido del control lo paso a la variable, me junta las dos lineas y no me deja ningún espacio entre lo escrito en una línea y la otra.
¿Habría forma de que en la variable X(200), al juntar las dos líneas, me las separe con un espacio, un guión, o algo?

Un saludo.

Kuk
5 de febrero de 2017, 22:51
me junta las dos lineas
Esto no es posible. El salto de línea en Windows es de 2 bytes y el valor es X"0D0A", ese valor no es visible. Si lo visualizas en un control "mono-línea", simplemente no lo muestra y es por eso que lo ves todo junto, pero el valor sigue ahí cuando haces el MOVE desde el TextBox hacía la variable WORKING.

Haz un INSPECT o un bucle sobre tu variable WORKING reemplazando el valor X"0D0A" por lo que quieras.

Ya nos dirás si se ha resuelto tu problema ;)

Begoguay
6 de febrero de 2017, 19:34
Esto no es posible. El salto de línea en Windows es de 2 bytes y el valor es X"0D0A", ese valor no es visible. Si lo visualizas en un control "mono-línea", simplemente no lo muestra y es por eso que lo ves todo junto, pero el valor sigue ahí cuando haces el MOVE desde el TextBox hacía la variable WORKING.

Haz un INSPECT o un bucle sobre tu variable WORKING reemplazando el valor X"0D0A" por lo que quieras.

Ya nos dirás si se ha resuelto tu problema ;)
Hola Kuk.
Yo quisiera sustituir el valor X"0D0A" por un guión.
Pongo esta instrucción
INSPECT TEXTO REPLACING LEADING X"0D0A" BY "-"

y me da error:
For a REPLACING phrase in an INSPECT statement, the lengths of the replacing character and replaced character must be equal

He intentado buscar el ASCII del guión ¿(X"2D")? y me pone el mismo error.

No se me ocurren mas soluciones para sustituir el salto de línea por un guión (-).:llora::llora::llora:

Kuk
6 de febrero de 2017, 20:55
Begoguay, el INSPECT no permite sustituciones de cadenas de caracteres de diferentes tamaños. Es decir, la longitud del texto a reemplazar debe coincidir con la longitud del texto nuevo. En este caso si haces


INSPECT TEXTO REPLACING
ALL X"0D0A" BY "- "


Te va a funcionar.

Si no quieres 2 caracteres, ya debes hacer un bucle:


ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 IDX-1 PIC 9(4) COMP-5.
01 WS-CAMPO PIC X(8192).
PROCEDURE DIVISION.

MOVE "Text" OF CmText1 TO WS-CAMPO

MOVE 1 TO IDX-1

PERFORM UNTIL (IDX-1 + 2) > LENGTH OF WS-CAMPO
IF WS-CAMPO(IDX-1:2) = X"0D0A"
MOVE SPACES TO WS-CAMPO(IDX-1:1)
MOVE WS-CAMPO(IDX-1 + 2:) TO WS-CAMPO(IDX-1 + 1:)
END-IF

ADD 1 TO IDX-1
END-PERFORM

MOVE WS-CAMPO TO ...