NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO

Iniciado por osmo83, 4 Agosto 2014, 22:35 PM

0 Miembros y 1 Visitante están viendo este tema.

osmo83

Buenas a todos, necesitaría crear un editor hexadecimal muy básico, no sé si este lenguaje será el mejor, pero es del único qu etengo conocimientos. El caso es que tengo que abrir un archivo de 250 mb y escribir siempre lo mismo, unos 10 mb de línea.

Estuve buscando por internet y encontré ejemplos pero no me dejan copiar y pegar, sólo modificarlo por pulsaciones y con SENDKEYS me tarda unos 30 o 40 minutos de reloj, cuando con un editor hexadecimal normal se copia y se pega en un instante.

Estoy perdido en este asunto, podría alguien hecharme una mano?

Gracias :)

MCKSys Argentina

Y porqué no usas un editor hexa ya hecho? Hay editores gratis...

Cual es el motivo por el cual debes/necesitas hacer uno?

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


osmo83

Simplemente para hacer más completa la aplicación que estoy realizando y así no tener que recurrir a programas externos.

MCKSys Argentina

Bueno, aqui tienes un editor hexa hecho en VB6.

Seguro puedes sacar ideas de ahí.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


osmo83

#4
Ok, voy a echarle un vistazo gracias. ;-)

Ya lo ví y ya dí con la tecla, ahora el mproblema es que no puedo escribir en el archivo el byte null, es decir 00, en ASCII sería simplemnte con punto, pero no me lo pasa bien a hexadceimal.

Alguna idea?

MCKSys Argentina

Cita de: osmo83 en  5 Agosto 2014, 16:31 PM
el mproblema es que no puedo escribir en el archivo el byte null, es decir 00, en ASCII sería simplemnte con punto

No. El byte 0x00 (ó &H00) no es un punto. Se representa como un punto, porque es un caracter no imprimible.
Si quieres escribir un byte nulo (0x00) en el archivo, lo escribes, pero para verlo necesitarás abrir el archivo con un editor hexadecimal...  :P

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


osmo83

#6
Ok, ahora el problema que tengo es que no me copia en la posición que yo quiero del archivo, o necesito que llega hasta la posición 7C0020 que ne decimal sería 130023936, pero cuando pongo el que escriba ahí no escribe nada, sin embargo si l edoy algún valor más bajo, que sé yo 400000 lo escribe sin problema, así que debe ser una limitación de la sentencia put, vamos digo yo.

Ejemplo:

Private Sub Command1_Click()
   
     
   On Error GoTo error_Sub
     
   
       'Array que contendrá los bytes del archivo es decir los datos
       Dim Data As Byte
     
       'Variable Para el tamaño del archivo ( luego se usa para el Redim )
       Dim fLen As Long
     
       'Abrimos el archivo en modo binario de solo lectura (Binary Lock Read)
       Open "C:\Users\Moisés\Desktop\prueba\archivo1.bin" For Binary Lock Read As 1
     
       'creamos un archivo para guardar los datos ( Binary Access Write )
       Open "C:\Users\Moisés\Desktop\prueba\archivo2.bin" For Binary Access Write As 2
     
       'Redimiensionamos el array al tamaño del archivo
       fLen = FileLen("C:\Users\Moisés\Desktop\prueba\archivo1.bin")
     
       ReDim Data(fLen) As Byte
       'Leemos el archivo entero y lo almacenamos en el array
       Get #1, , Data
     
       'Escribimos los bytes del array anterior, en el nuevo archivo ( archivo 2 )
       Put #2, 130023936, Data
     
       'Cerramos los dos archivos
       Close
         
       
       MsgBox "archivo copiado", vbInformation
     
   Exit Sub
     
error_Sub:
   MsgBox Err.Description, vbCritical
     
 
End Sub



Alguna idea?

MCKSys Argentina

Cita de: osmo83 en  6 Agosto 2014, 16:54 PM
Alguna idea?

Revisa la MSDN de VB6 sobre las instrucciones OPEN y PUT.

En especial la parte donde trabajas con archivos en modo binary y cuando escribes datos en los mismos (opcion SIZE de Open).

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


osmo83

Ok, lo buscaré, pero podrías ponerme un código de ejemplo? es que si no fijo que no doy con la tecla.

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."