Fichero binario


([N1] comercial) #1

Hola amigos, me surge un problema, necesito leer un fichero de disco, pero en modo binario, para extraer unos bytes de ciertas posiciones, pero no encuentro (tampoco en V6) el modo de leer un fichero, que no sea en modo linea de texto con caracteres de fin de linea etc.

¿ a nadie le ha surgido esa necesidad ?.

 

 

Saludos.

  Miguel.


([N4] innovadb) #2

Hola Miguel

 

A nosotros nos ha surgido esa necesidad, pero es imposible. La solución es usar dlls o ejecutables externos.

 

En nuestro caso lo solucionamos con un ejecutable que nos devuelve el fichero en base64.

 

Un saludo


([N1] Roberto Blasco) #3

Hola innoovadb

 

¿Cómo haces para extraer una secuencia de bytes en una posición determinada de memoria de un buffer (archivo) convirtiéndolo a base64?

 

Un saludo. Roberto Blasco.

 

P.D. Aprovecho para felicitaros por vuestro magnífico trabajo con v7 .... me ha dicho un pajarito.

 


([N4] innovadb) #4

Que tal amigo

 

Ese pajarito ya nos dio tus recuerdos en Gijon.

 

En el anterior mensaje no me expliqué del todo. Yo solo necesitaba convertir el fichero a base64 para envierlo como adjunto de correo, pero para hacerlo necesitaba leerlo como binario, que es lo que no se puede hacer desde velneo.

La solución fue un ejecutable externo que directamente lo convierte a base64, pero no leo ninguna secuencia de bytes. Se lo expliqué a Miguel por que supongo que habrá algun ejecutable que te lea el fichero y te devuelva un fichero con el codigo binario o algo parecido.

 

Tambien se podria probar a generar el fichero en base64 y a partir de el generar un txt con ceros y unos. (supongo)

 

Un abrazo


([N1] comercial) #5

Veis, estas son las cosas que le sientan mal a los programadores colegas, a los que les intento ´vender´la bondades de la herramienta, es cierto que hay cosas sin importancia, y esta parece ser una de ellas, pero dile a un programador, NO SE PUEDE O NO ES FÁCIL, ojo no hablamos de descubrir la cura del cáncer, simplemente leer de un archivo, llevamos toda la vida haciéndolo, y ya lo tienes encabronado, en fin voy a ver si lo pongo en el foro de ideas, a lo mejor alguien lo vota.

 

Saludos cordiales.

   Miguel.


([N1] Roberto Blasco) #6

Hola innovadb

 

Estamos confundiendo términos .... un fichero binario no se puede leer de forma convencional (tal como nosotros estamos acostumbrados a leer un fichero de texto) y menos interpretar a no ser que sea con un editor hexadecimal.

Los archivos de texto que nosotros estamos acostumbrados a leer son una secuencia de bytes de (1 byte por caracter).

 

Imagina que tenemos un archivo con la palabra hola, la secuencia de bytes sería la siguiente 

68 6f 6c 61 (hexadecimal) --> 104 111 108 97 (decimal) --> hola (ascii)

Es decir, cada byte representa un carácter ascii que nosotros podemos leer.

 

Ahora imaginemos un archivo binario que responde a la estructura de una agenda

Integer Edad (4 bytes)

Char[35] Nombre (35 bytes)

Char[35] Apellido1 (35 bytes)

Char[35] Apellido2 (35 bytes)

Cada registro en la agenda ocuparía 109 bytes. Si tenemos 4 registros el fichero binario ocuparía 436 bytes. Si ahora abriésemos este fichero binario lo que veríamos sería basura y entre ella los nombres y los apellidos ya que el editor de texto lo que hace es interpretar cada byte convertirlo a ascii y presentarlo en pantalla. Esto es lo que nos pasas por ejemplo cuando abrimos un archivo de word (del 2003 para abajo) e intentamos leerlos con el notepad.

 

Por eso como muy acertadamente habéis dicho, la única forma de procesar un fichero binario es con "algo" que sea capaz de leer los bytes sin interpretarlos, y me temo que Velneo no cuenta con esa funcionalidad.

 

Con una dll sería muy sencillo realizarlo. Lo mismo pudiera ser un "toque de atención" a los desarrolladores de Velneo para que implementasen una función tan básica como ésta.

 

Un saludo. Roberto Blasco.

 

 

 


([N1] comercial) #7

Hola, A eso me refiero Roberto, en Velneo se han hecho cosas estupendas, funcionalidades que nos ahorran dolores de cabeza y horas de programación, sobre todo en la BBDD, eso es Life is Soft, pero en cambio para las cosas mas básicas tenemos que idear infinidad de trucos y retorcidas de tuerca, está bién para las neuronas, pero no es Life is Soft.

 

PD:Este caso particular, es que quiero leer de ficheros de datos en COBOL, conozco las posiciones de la cabecera donde están los datos de número de registros, borrados, comienzo de la zona de datos, tamaño del registro, etc. entonces puedo leer las tablas directamente desde velneo, pero tengo que hacerlo con un abrir fichero en binario, posicionar el puntero, leer x bytes, etc. esto lo tengo en .net sin problemas, pero quiero hacerlo en velneo, sin intermediarios, para mi eso seria Life is Soft. Quizá sea demasiado complicado implementar esas funciones.

 

 

Saludos.

  Miguel.


([N1] Roberto Blasco) #8

@Comercial.arhes

 

Si lo tienes desarrollado en .net, puedes compilar una dll ActiveX, ejecutarla mediante vbscript y 

regoger el resultado a través de ficheros de intercambio ... es un poco farragoso, pero si no sabes compilar dlls en C es una solución práctica.

 

Un saludo. Roberto Blasco.

 


([N4] velavisual) #9

@Miguel

 

Puede que te valga la utilidad

 

 

DataViewer Cobol Exporter

Puede leer un fichero de datos de COBOL y convertirlo formatos de no COBOL como el archivo CSV.READ con la Disposición Sabida(Conocida) De registro. Le saben(conocen) la disposición de registro del fichero de datos. Usted tiene un archivo de archivo *.FDD que contiene la información

de disposición de registro y un eslabón al fichero de datos real. Empleo

" Archivo. Abierto " mando(orden) de abrir el archivo *.FDD.

Reconoce estos formatos de archivos Cobol:

* MF: MicroFocus Cobol,

* MFSCO: MicroFocus SCO Cobol,

* MF8: MicroFocus Cobol IDXFORMAT8

* VIS: MicroFocus Visual Cobol,

* RM: RM/RM85 Cobol

* FSC: FSC RMKF Cobol

* ACU: AcuCobol

* ACU: Egan iCobol

* ACU: WANG Cobol

* SEQ: Sequential Cobol data files,

Caracteristicas:

* Disposición de Registro de Extracto de Programa de COBOL. Usted puede convertir el cuaderno de COBOL (incluir el archivo) que contiene una declaración FD con el archivo ` la disposición de registro de s por usando " el Archivo. Disposición de Carga de Cuaderno " mando(orden). *

Leer el archivo con la Disposición Desconocida De registro. Usted no

sabe(conoce) cual la disposición de registro de su fichero de datos es.

Empleo " Archivo. Abierto " el mando(la orden) de abrir el fichero de

datos sí mismo y el Espectador de datos adivinará la disposición de

registro para usted.

* Disposición de Registro de Revisión. Usted puede corregir la

disposición de registro - el movimiento, hender, combinar campos. Cuando

usted es hecho, el chasquido el botón Aplicar y la nueva disposición

serán usados releer el fichero de datos. La disposición adivinada por lo

general no es totalmente correcta, entonces use estos layoit editing

capacidades de mejorarlo.

* Exportar los datos al formato de no COBOL. Usted puede exportar ficheros de datos abiertos en:

* Valores Separados por coma (CSV) formato.

 

 

Saludos

Antonio Vela

http://www.velavisual.com

 


([N4] juan.pescapuerta) #10

Hola.

Si me indicas que tipo de cobol es, igual puedo ayudarte. Ten en cuenta que en cobol aunque sea el mismo cobol existen versiones de ficheros diferentes, es posible, ficheros cobol con el indice y los datos en el mismo fichero, o al contrario, con los indices separados . O que los datos esten empaquetados en diferentes formatos.

 

Un Saludo


([N1] comercial) #11

Hola, gracias por sus comentarios y ofrecimientos, pero creo que no me he explicado bien, no tengo ningun problema con los ficheros en COBOL, de hecho son mios, con lo cual puedo exportar los datos sin problemas, lo que ocurre es que me gustaría poder abrirlos directamente desde mi app en Velneo sin intermediarios, pero para eso se necesita implementar o mejor diria yo, complementar las funciones de apertura/lectura/grabación/cierre de ficheros, para que acepten trabajar en modo binario, creo que se entiende bien lo que quiero decir.

 

Saludos.

  Miguel.


([N4] juan.pescapuerta) #12

Creo que lo mejor sería trabajar via ODBC.

Desde luego , no sé de ninguna herramienta que trabaje de forma nativa con ficheros cobol.

 

Saludos