Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Compilador] Powercobol búsqueda lenta ficheros indexados LAN (https://www.cobolforo.es/showthread.php?t=624)

Kuk 11 de mayo de 2017 21:37

Joseg, si haces pruebas con otros OCX publícalas en el foro ;)

Nitzer 12 de mayo de 2017 18:30

1 Archivos Adjunto(s)
Vamos a ver, en primer lugar:

ME HABEIS HECHO PERDER EL DIA CON EL .... SOCKET JJJJJJJJJ

Pero tengo el honor de presentaros el Cobosap (una mezcla de Cobol con Guasap), ahí queda eso.

Un resumen:
- He incluido tanto el cliente como el servidor en el mismo ejecutable, de hecho son el mismo ejecutable.
- Tiene que existir un .ini (en el ejemplo va uno para que veais como construirlo.
- Para ejecutar el sistema Servidor, al ejecutarlo añadir una S al commandline, es decir: COBOSAP S
- Para el cliente no incluir nada, solo ejecutar.

He aprovechado también para que veáis como hago mis ventanas movibles sin usar el sistema de Windows, seguro que sabéis como hacerlo, pero igual a alguien le puede venir bien. Además con efecto "imán" cuando está cerca de un borde. :)

EL sistema detecta si hay comunicación en cualquier dirección y habilita o deshabilita el botón de enviar si no hay conexión tanto de una parte como de otra.

Bueno, pues eso, estáis tardando en probarlo.

Kuk 13 de mayo de 2017 11:05

Nitzer, se te ha olvidado incluir el icono ;)

También hay que eliminar el valor de TargetFolderRelease de las propiedades de COBOSAP [Module], que contiene "U:\SOCKET"

Buen ejemplo del uso del Socket amigo Andrés, si señor. Habría que mirar cómo se hace para que sea multicliente y conexión entre varios simultáneamente.

Nitzer 13 de mayo de 2017 11:33

Es verdad Kuk, se me olvidó quitarlo jjjjj. El icono es que tampoco me iba, no se porque y no quise perder mas tiempo, que cada uno le ponga el que quiera.

Lo del multi..... lo dejo para otro. :)
Recordad que para mover la pantalla, es arrastrando la barra negra superior.

Dasije 13 de mayo de 2017 17:43

Lo de multiconexion es fácil, crear tanto controles socket se necesita y en cada conexión generarle un identificador, e ir comprobando lo que se va recibiendo y asignando al socket al que debe escuchar.

Lástima que PowerCOBOL no pueda clonar objetos en tiempo de ejecución, que sería su verdadero objetivo en este caso, en Windev si se puede hacer.

Kuk 13 de mayo de 2017 20:41

Dasije, deja de hacer publicidad al Windev hombre :D Que vamos a pensar que tienes acciones y todo :D ;)

En cuanto al tema, yo creo que la utilización del Socket sobre todo sería útil en propósitos como el de Joseg. Y en cuanto a clonarlo, yo creo que estás equivocado. Todo OCX tiene su Prog-ID, y con el Prog-ID podemos hacerlo:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  COM-OBJECT  OBJECT REFERENCE COM.
  5.  01  ProgID      PIC X(50) VALUE "MSWinsock.Winsock".
  6.  PROCEDURE       DIVISION.
  7.      
  8.      INVOKE COM "CREATE-OBJECT" USING ProgID RETURNING COM-OBJECT

Dasije 14 de mayo de 2017 17:29

No es por publicidad comercial, puedo decir que en Delphi también se puede hacer con la sentencia Create, en Windev sería ControlClone.

Código Delphi:
  1. Control2 = Control1.Create()

En PowerCOBOL, no he visto nada en relación a ello, lo más parecido a ello son array previamente creado antes, habría que mirar la api de windows, que funciones intervienen en cada paso para clonar.

Sobre PROG-ID, es un número único que asigna el sistema operativo a cada objeto o activex que entra en acción con el sistema, lo correcto sería el handle del objeto que genera cada vez que se ejecuta.

Kuk 14 de mayo de 2017 20:51

1 Archivos Adjunto(s)
Cita:

Citación del post de Dasije (Mensaje 3076)
No es por publicidad comercial, puedo decir que en Delphi también se puede hacer

Ya, pero me refiero a que en este tema estamos hablando de PowerCOBOL. Está claro que se puede hacer en otros entornos ;)


Cita:

Citación del post de Dasije (Mensaje 3076)
Sobre PROG-ID, es un número único que asigna el sistema operativo a cada objeto o activex que entra en acción con el sistema

No, esto de lo que estás hablando es el CLASS-ID, el PROG-ID es lo que he dicho antes. Mira el pantallazo que adjunto.
El ejemplo que puse antes del CREATE-OBJECT con el Winsock funciona, no es "pseudo código". Además, aquí tienes otro ejemplo de creación dinámica de un objeto: [Aporte] Uso del ChartControl de Codejock - COBOL Foro

Código COBOL:
  1.      MOVE "Codejock.ChartAreaSeriesStyle.15.0.1" TO TXT    
  2.      INVOKE COM "CREATE-OBJECT" USING TXT RETURNING CHART-STYLE

El Handle, no siempre es expuesto (no es declarado como público), además sólo existe después de instanciar la clase.

Y por cierto, simepre nos queda crear un módulo en OO COBOL e instanciar esa clase definida.

Rapinto 16 de mayo de 2017 00:17

KUK,

Sabes como resolver, utilizando *COM, os eventos do objecto COM??
Por exemplo neste caso o evento do "Winsock.ocx" "DataArrival"?

Nunca consegui utilizar Events. Apenas Properties and Methods.
Nem sei se é possível.
Un saludo,
Rui Pinto

Kuk 16 de mayo de 2017 10:16

Rapinto, nunca lo he intentado. Se me ocurre que a lo mejor con el subclassing del Form se podría conseguir. Es decir, en el bucle, el

Código CPP:
  1. BOOL WINAPI GetMessage(
  2.   _Out_    LPMSG lpMsg,
  3.   _In_opt_ HWND  hWnd,
  4.   _In_     UINT  wMsgFilterMin,
  5.   _In_     UINT  wMsgFilterMax
  6. );

Debería también recibir notificaciones de eventos de los objetos creados dinamicamente. Y con el subclassing se podrá interceptarlos. Aunque es la teoría, no estoy seguro de ello.


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

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