Antonio, he tardado un poco en responder: así es fprintf no llega a funcionar.
Mañana probaré esto otro que me indicas.
Migrando de FWH 32 a FWH 64 - windows.h
Re: Migrando de FWH 32 a FWH 64 - windows.h
Lo acabo de probar y se para en hb_fopen.
El código que he puesto es:
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 ) ) ;
- 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
Paz,
Cambia esta línea asi:
fichero = hb_fopen( "LISTFTP.DAT", "w" );
Cambia esta línea asi:
fichero = hb_fopen( "LISTFTP.DAT", "w" );
Re: Migrando de FWH 32 a FWH 64 - windows.h
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.
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.
- 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
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
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