elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Alguien sabe como abrir un archivo de 500 mb sin desbordamiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alguien sabe como abrir un archivo de 500 mb sin desbordamiento  (Leído 2,029 veces)
ELGRANSOLRAC

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Alguien sabe como abrir un archivo de 500 mb sin desbordamiento
« en: 21 Enero 2006, 01:11 am »

Hola:
Estoy haciendo un brograma para abrir archivos de cualquier extension,pero solo puedo abrir archivos de poco tamaño ¿Alguien sabe como abrir un archivo de 400 o 500 mb sin desbordarse? Gracias quien pueda ayudarme o tenga algo de informacion se lo agradeceria..Gracias a todos..

Este es mi codigo,utilizo un Richtextbox y un commonDialogo.
Código:

Private Sub Command1_Click()
Dim datos As String * 5000

 CdlBuscar.InitDir = App.Path
 CdlBuscar.Filter = "Archivos" & "(*.*)|*.*|"
    CdlBuscar.ShowOpen
    If Not CdlBuscar.FileName = "" Then
        panel.FileName = CdlBuscar.FileName
    End If
   
   
   
   
End Sub

Gracias a todos...


En línea

ANELKAOS
Colaborador
***
Desconectado Desconectado

Mensajes: 3.105


#include<nda.h>


Ver Perfil WWW
Re: Alguien sabe como abrir un archivo de 500 mb sin desbordamiento
« Respuesta #1 en: 21 Enero 2006, 01:18 am »

utiliza memoria dinámica (creo que me acaba de patinar la neurona con C por llevar sin usar VB mucho tiempo pero por si acaso lo digo  :P) o variables de tipo variant

Puedes llamar a otro programa para que lo abra, por ejemplo el wmplayer.exe o iexplore.exe.

1Saludo.


En línea

Angellore

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Alguien sabe como abrir un archivo de 500 mb sin desbordamiento
« Respuesta #2 en: 26 Enero 2006, 19:02 pm »

Hola.
Como dijo ANELKAOS, lo mejor es utilizar la memoria para leer el archivo.

Escribí una función que lee un archivo grande a la memoria y devuelve la dirección base en donde se encuentra, para luego poder leerlo utilizando ReadProcessMemory y modificarlo con WriteProcessMemory. Esta función puede servir para guardar un archivo grande con un par de modificaciones leves.

Las funciones que utilizo se encuentran en la biblioteca win.tlb que encontré en este mismo foro. Sólo hay que agregar como referencia win.tlb y funciona.

Código:
Option Explicit

Function ReadLargeFile(ByVal Filename As String) As Long
        Dim lDataChunkSize&
        Dim lNumberOfChunks&
        Dim hFile&, lFileLen&
        Dim lMemOffset&, lReadLen&
        Dim hMem&, i&, r&

  ' Abre el archivo para lectura.
  '
  hFile = CreateFile(Filename, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, _
                     0&, OPEN_EXISTING, 0&, 0&)
 
  If hFile = INVALID_HANDLE_VALUE Then Exit Function
 
  ' Se obtiene el tamaño del archivo.
  '
  lFileLen = GetFileSize(hFile, 0&)
 
  lDataChunkSize = 1024& * 1024&  ' Se leerá de a trozos de 1 MB
 
  ' Si calcula en cuántas veces se leerá el archivo.
  '
  lNumberOfChunks = lFileLen \ lDataChunkSize
   
  If lNumberOfChunks = 0 Then
    lNumberOfChunks = 1 ' El archivo en menor a 1 MB.
  Else
    ' Calcula la longitud de los datos de la última
    ' sección del archivo, que seguramente es menor
    ' a 1 Megabyte.
    '
    If (lFileLen Mod lDataChunkSize) > 0 Then lNumberOfChunks = lNumberOfChunks + 1
  End If
 
  ' Asigna memoria para leer el archivo.
  '
  hMem = VirtualAlloc(0&, lFileLen, MEM_COMMIT, PAGE_READWRITE)
 
  If hMem = 0 Then GoTo FailRead
 
  For i = 1 To lNumberOfChunks
    ' Se verifica si es la última sección del archivo o no.
    '
    If i < lNumberOfChunks Then
      lReadLen = lDataChunkSize
    Else
      lReadLen = lFileLen Mod lDataChunkSize
    End If
   
    ' Lee el trozo del archivo a la memoria.
    '
    r = ReadFile(hFile, ByVal hMem + lMemOffset, lReadLen, 0, ByVal 0&)
   
    If r = 0 Then GoTo FailRead
   
    ' Pasa al siguiente trozo de datos.
    '
    lMemOffset = lMemOffset + lReadLen

    DoEvents
  Next

FailRead:
  If Err.LastDllError <> ERROR_SUCCESS Then
    ' Libera la memoria si no se pudo leer el archivo.
    '
    Debug.Print GetSysErr(Err.LastDllError)
    r = VirtualFree(hMem, 0, MEM_RELEASE)
  Else
    ' Devuelve el puntero al inicio del archivo en memoria.
    '
    ReadLargeFile = hMem
  End If
 
  ' Cierra el archivo.
  '
  r = CloseHandle(hFile)

End Function

Function GetSysErr(ByVal ErrNumber As Long) As String
        Dim sBuffer$, lLen&

  sBuffer = String$(1024, 0)
 
  lLen = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, ErrNumber, 0&, ByVal sBuffer, 1024, ByVal 0&)
 
  If lLen Then
    sBuffer = Left$(sBuffer, lLen)
  End If
 
  GetSysErr = sBuffer
End Function

Saludos.
Angellore.
En línea

ZuKaR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Alguien sabe como abrir un archivo de 500 mb sin desbordamiento
« Respuesta #3 en: 18 Octubre 2006, 20:27 pm »

Las funciones que utilizo se encuentran en la biblioteca win.tlb que encontré en este mismo foro.

Buenas, aprovecho para saludar a todo el foro

Quisiera que me indicaráis de dónde descargar la librería win.tlb dado que no la he encontrado por el foro.

Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
alguien sabe como puedo descomprimir un archivo.rar
Análisis y Diseño de Malware
full159 1 1,906 Último mensaje 6 Agosto 2014, 00:33 am
por simorg
Alguien sabe como abrir varias paginas web
Dudas Generales
FCOSTA 2 2,517 Último mensaje 15 Septiembre 2014, 03:18 am
por FCOSTA
Alguien sabe que es el archivo Colous.exe
Seguridad
lucas25cba 3 3,293 Último mensaje 13 Septiembre 2017, 00:15 am
por lucas25cba
alguien sabe como descargar este archivo
Desarrollo Web
CAM1LO 3 2,864 Último mensaje 2 Febrero 2018, 03:03 am
por CAM1LO
¿Alguien sabe cómo abrir un ZIP con contraseña olvidada?
Hacking
big_ed 9 5,905 Último mensaje 25 Septiembre 2019, 04:43 am
por elenavega
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines