Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Componente] TextBox Multilinea y saltos de línea (https://www.cobolforo.es/showthread.php?t=565)

Begoguay 5 de febrero de 2017 22:02

TextBox Multilinea y saltos de línea
 
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

Cita:

Citación del post de Begoguay (Mensaje 2710)
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

Cita:

Citación del post de Kuk (Mensaje 2711)
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
Código COBOL:
  1.         INSPECT TEXTO REPLACING LEADING X"0D0A" BY "-"
y me da error:
Código:

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

Código COBOL:
  1.      INSPECT TEXTO REPLACING
  2.          ALL X"0D0A" BY "- "

Te va a funcionar.

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

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  IDX-1       PIC 9(4) COMP-5.
  5.  01  WS-CAMPO    PIC X(8192).
  6.  PROCEDURE       DIVISION.
  7.      
  8.      MOVE "Text" OF CmText1 TO WS-CAMPO
  9.      
  10.      MOVE 1 TO IDX-1
  11.      
  12.      PERFORM UNTIL (IDX-1 + 2) > LENGTH OF WS-CAMPO
  13.          IF  WS-CAMPO(IDX-1:2) = X"0D0A"
  14.              MOVE SPACES               TO WS-CAMPO(IDX-1:1)            
  15.              MOVE WS-CAMPO(IDX-1 + 2:) TO WS-CAMPO(IDX-1 + 1:)
  16.          END-IF
  17.          
  18.          ADD 1 TO IDX-1
  19.      END-PERFORM
  20.      
  21.      MOVE WS-CAMPO TO ...


La franja horaria es GMT +2. Ahora son las 14:36.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.