Migrando de FWH 32 a FWH 64 - windows.h

Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post by Verhoven »

Antonio, he tardado un poco en responder: así es fprintf no llega a funcionar.
Mañana probaré esto otro que me indicas.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post by Verhoven »

Lo acabo de probar y se para en hb_fopen.
El código que he puesto es:

Code: Select all

//#include <hbapifs.h>  //Necesarias para hb_fsOpen
#include <fileio.ch>

#include "hbapi.h"
#include "stdio.h"
#include "WinBase.h"

FILE * hb_fopen( const char * path, const char * mode );

...

HB_FUNC( FTPLASTFILEINDIR )  //Método por el último nombre en el listado obtenido.
{  
    WIN32_FIND_DATA ultdir;
    WIN32_FIND_DATA dirtemp;
    SYSTEMTIME stUTC;
    HINTERNET FtpHandle;
    FILE * fichero;
   
    MessageBox( GetActiveWindow(), "Antes de hb_fOpen() y antes de FtpFindFirstFile()", "Informacion", 0x40 );
    OutputDebugString( "Antes de hb_fsOpen() y antes de FtpFindFirstFile()\n" );

    //fichero = (FILE *) hb_fsOpen( "LISTFTP.DAT", FO_WRITE );
    fichero = hb_fopen( "LISTFTP.DAT", (const char * ) FO_WRITE );
   
    OutputDebugString( "despues de hb_fsOpen() y antes de FtpFindFirstFile()\n" );
 
    FtpHandle = FtpFindFirstFile( ( HINTERNET ) hb_parnl( 1 ), hb_parc( 2 ), &dirtemp, hb_parnl( 3 ), hb_parnl( 4 ) ) ;
 
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post by Antonio Linares »

Paz,

Cambia esta línea asi:

fichero = hb_fopen( "LISTFTP.DAT", "w" );
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post by Verhoven »

Ahora no se cuelga y va bien Antonio. :)

Lo que si me gustaría saber es que si tienes un rato puedas explicar el porqué de usar hb_fopen en vez de la propia de C fopen.

Saludos.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post by Antonio Linares »

Paz,

En realidad esa función está basada en fopen() pero antes de llamarla desbloquea la máquina virtual de Harbour,
permitiendo trabajar al recolector de basuras y otros códigos de ejecución exclusiva.

Y una vez se llama a fopen() se vuelve a bloquear el recolector de basuras y la ejecución de otras tareas mono hilo.

Aqui puedes revisar su código:

https://github.com/harbour/core/blob/ma ... /hbfopen.c
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply