Título: No me lee archivo
Publicado por: fary en 22 Abril 2010, 21:15 pm
Hola, tengo el siguiente problema, estoy intentando leer un mediante api pero nose porqeu demonios no me coje los datos, este es el code: Option Explicit Public Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Public Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByRef lpOverlapped As Any) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Const GENERIC_READ = &H80000000 Public Const FILE_SHARE_READ = &H1 Public Const FILE_ATTRIBUTE_NORMAL = &H80 Public Const OPEN_EXISTING As Long = 3 Public Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Public Type OVERLAPPED ternal As Long ternalHigh As Long offset As Long OffsetHigh As Long hEvent As Long End Type Public Function Archivo(ruta As String) As Boolean Dim abrirarchivo As Long Dim sa As SECURITY_ATTRIBUTES Dim leerarchivo As Long Dim over As OVERLAPPED Dim buffer As String Dim nada As Long Dim bytesleidos As Long abrirarchivo = CreateFile(ruta, GENERIC_READ, FILE_SHARE_READ, sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) buffer = Space(FileLen(ruta)) leerarchivo = ReadFile(abrirarchivo, buffer, nada, bytesleidos, over) Call CloseHandle(abrirarchivo) MsgBox buffer End Function Sub Main() Call Archivo("c:\feo.txt") End Sub
espero vuestra ayuda. salu2!
Título: Re: No me lee archivo
Publicado por: Dr [F] en 22 Abril 2010, 21:25 pm
drinky.. para que complicarte la vida usando API .. ?'
acuerdate esto:
Mientras mas lineas tiene el programa mas pesa y mas bugs puede tner :-\
Bye !
Título: Re: No me lee archivo
Publicado por: fary en 22 Abril 2010, 21:28 pm
drinky.. para que complicarte la vida usando API .. ?'
acuerdate esto:
Mientras mas lineas tiene el programa mas pesa y mas bugs puede tner :-\
Bye !
hay que saber mas opciones... si siempre tienes una unica salida habra veces que no te servira. salu2!
Título: Re: No me lee archivo
Publicado por: PeterPunk77 en 23 Abril 2010, 09:56 am
En la llamada a la API ReadFile hay un par de errores: - El buffer se lo tienes que pasar por valor. - No le indicas el número de bytes que tiene que leer (tu variable nada, que no está inicializada) Debería ser así: leerarchivo = ReadFile(abrirarchivo, ByVal buffer, FileLen(ruta), bytesleidos, over)
o mejor aún: Dim BytesALeer as Long BytesALeer = FileLen(ruta) buffer = Space(BytesALeer) leerarchivo = ReadFile(abrirarchivo, ByVal buffer, BytesALeer, bytesleidos, ByVal over)
Saludos.
Título: Re: No me lee archivo
Publicado por: fary en 23 Abril 2010, 14:50 pm
Muchas gracias... me falto ese byval que fallo xD!
salu2!
|