FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Migrando de FWH 32 a FWH 64 - windows.h
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 09:08 AM

El error de quedarse colgado al salir del programa ha vuelto a reproducirse, no se que ha pasado de ayer a hoy porque no hemos tocado nada de c贸digo. Incluso aun comentando l铆nea por l铆nea o toda la EXIT PROCEDURE KillApp() entera se queda colgado al salir.
Necesito que me orientes para depurar este problema que en 32 bits no aparece porque no se como.
Lo 煤nico que he encontrado es que cuando el windows me remite a depurar con el VSC me sale una pantalla en la que me da el nombre del programa con un n煤mero. Suponiendo que ese n煤mero correspondiera con un n煤mero de l铆nea del programa resulta referirse a una instrucci贸n sysrefresh().

Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 10:27 AM

Hola;

Aqu铆 puedes ver usando las funciones nativas de Harbour / xHarbour la forma de saber si hay conexi贸n a Internet:

PROCEDURE Main
LOCAL pSocket

  INetInit()

  pSocket := INetConnect( "www.xharbour.com", 80 )

  ? INetAddress( pSocket )   // result: 193.239.210.10

  INetClose( pSocket )
  INetCleanUp()

RETURN

Espero que te sirva.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 10:33 AM

Paz,

Te falta incluir este include en tu fichero en C:

include <hbapifs.h>

No uses un EXIT procedure, no hace falta y de ah铆 puede venir el problema.

Cualquier limpieza que quieras hacer hazla tras el ACTIVATE WINDOW ... del PRG principal y ver谩s como no tienes ning煤n problema :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 10:36 AM

Paz,

Veo que est谩s usando dlls de 32 bits y en 64 bits no es posible:

 //freelibrary(&quot;nviewlib.dll&quot;)
 //freelibrary(&quot;avicap32.dll&quot;)

Tampoco Fast Report funciona en 64 bits.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 11:06 AM
Antonio, tengo incluido ese include. Creo que no lo has visto. Est谩 en la lista de includes justo debajo de #PRAGMA BEGINDUMP.

Otra forma de eliminar esos warnings para fopen y otras funciones "standard" de C con VSC2013 es incluir las siguientes l铆neas en el c贸digo C:
Code (fw): Select all Collapse
#pragma warning(disable: 4996)
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 04:20 PM

Paz,

Es que has escrito hb_fsopen() y en realidad es hb_fsOpen()

C谩mbialo y vuelve a compilarlo :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - hb_fsOpen() fopen() en C

Posted: Tue Jan 06, 2015 06:44 PM
Antonio, con la O may煤scula lo acepta.

Pero por dejar documentado el cambio completo que ha sido necesario:
Para usar hb_fsOpen() en vez de fopen() adem谩s de a帽adir en los includes #include <hbapifs.h> y #include <fileio.ch>, hay que hacer una conversi贸n de tipo para hb_fsOpen() para evitar otro warning.
De modo que si el c贸digo original con fopen() era por ejemplo:
Code (fw): Select all Collapse
FILE *fichero;
聽 聽 char nombre[12] = "LISTFTP.DAT";
聽 聽 fichero = fopen( nombre, "w" );

La versi贸n con hb_fsOpen() debe de escribirse:
Code (fw): Select all Collapse
FILE *fichero;
聽 聽 char nombre[12] = "LISTFTP.DAT";
聽 聽 fichero = (FILE *) hb_fsOpen( nombre, FO_WRITE );


Sin esto, al compilar, nos da el siguiente error:
Code (fw): Select all Collapse
internet.prg(461) : warning C4047: '=' : 'FILE *' differs in levels of indirection from 'HB_FHANDLE'


Y no obstante, no estoy seguro de si adem谩s ser铆a conveniente hacer una conversi贸n de tipos de las variables que se le pasan a hb_fsOpen(), pues creo que el prototipo de esta funci贸n es: hb_fsOpen( BYTE * pszFileName, USHORT uiFlags ) --> ( FHANDLE )hResult
y tengo dudas de que si la variable "nombre" apunta a una matriz de 12 posiciones (que es lo que usamos en el primer par谩metro de la funci贸n fopen) esto sea lo mismo en tama帽o que un puntero tipo BYTE (que es el primer par谩metro de hb_fsOpen).
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 07:11 PM

Paz,

Esas 3 l铆neas las podr铆as agrupar en una sola:

FILE * fichero = ( FILE *) hb_fsOpen( "LISTFTP.DAT", FO_WRITE );

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Tue Jan 06, 2015 08:37 PM

Hecho. :) Queda mejor!!!

Me queda ver lo del cuelgue de la salida del programa que no termina de salir bien y quedar谩 terminado el paso a 64 bits.
A ver si ma帽ana se me da mejor porque hoy no termino de dar con el problema, a pesar de haber reestructurado el proceso de cierre para ponerlo todo antes del oWnd:end() siendo oWnd el objeto ventana principal de la aplicaci贸n.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Wed Jan 07, 2015 06:35 AM

Paz,

Lo que quieras cerrar, liberar, etc. hazlo despues del ACTIVATE WINDOW oWnd principal.

Es el lugar correcto :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Wed Jan 07, 2015 10:43 PM
Antonio,
Para tratar de aislar el cuelgue de la aplicaci贸n al salir he llegado a eliminar, para intentar aislar el problema, todo el proceso de cierre. Dej谩ndolo exclusivamente en un oWnd:end(), donde oWnd es la ventana principal del programa.
Compilada en 32 bits con bcc63 no se cuelga al salir, pero en 64 con VSC 2013 si.
No se por donde puedo continuar para aislar el problema.
Por si puede ayudar utilizo 2 timers en la aplicaci贸n (no creo que tenga nada que ver pero lo dejo dicho por si acaso).
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Wed Jan 07, 2015 10:56 PM

Hola, no te genera un fichero hb_out.log ?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Thu Jan 08, 2015 07:29 AM

No. No encuentro ese fichero por ninguna parte.

Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Thu Jan 08, 2015 02:58 PM
Al fin ha quedado solucionado el cuelgue al salir de la aplicaci贸n en 64 bits:
C贸digo que genera el cuelgue:
Code (fw): Select all Collapse
ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( oWnd:setfont(oFontDoble),  Arranque(oWnd),  oBtnV:setfocus() ) ;
      VALID (iif(GetKeyState (VK_ESCAPE), .F.,oWnd:End()))


C贸digo que elimina el cuelgue (quitar todo el VALID):
Code (fw): Select all Collapse
ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( oWnd:setfont(oFontDoble),  Arranque(oWnd),  oBtnV:setfocus() )
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: Migrando de FWH 32 a FWH 64 - windows.h

Posted: Thu Jan 08, 2015 03:33 PM
Quizas quitando solo el oWnd:End() sea suficiente, asi
Code (fw): Select all Collapse
VALID ( iif(GetKeyState (VK_ESCAPE), .F., .T. ) )
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces