Muchas gracias Steven, ya he lo he conseguido :), ahora me ha surgido otra duda, tengo que hacer una id de producto aleatoria con una letra y dos numeros.<div>Ej: B12 </div><div>El caso que lo he estado intentando, y bueno te dejo el codigo que creo que se explicara mejor que yo:</div>
<div><br></div><div><a href="http://paste2.org/p/1982279">http://paste2.org/p/1982279</a> </div><div><br></div><div>En ese codigo lo que hago es a la letra darle un valor en ASCII, pero luego como lo paso a caracter?</div>
<div><br></div><div>Un saludo y gracias ^^ <br><br><div class="gmail_quote">El 16 de abril de 2012 00:16, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola Marcos,<div class="im"><br>
<br>
On 4/15/2012 5:05 PM, Marcos Collado wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Creo que el título se entiende poco, a ver si me explico mejor por<br>
aquí:<br>
<br>
Estoy intentando realizando un programa por el cual escriba datos en<br>
un documento .dat y lea de ellos. El caso es que tiene una estructura<br>
el documento:<br>
<br>
PRODUCTOS<br>
<br>
id producto "nombre" precio_compra precio_venta stock num_unidades<br>
<br>
...<br>
<br>
id producto "nombre" precio_compra precio_venta stock num_unidades<br>
<br>
FIN PRODUCTOS<br>
<br>
Entonces como puedo hacer para leer los datos por ejemplo de<br>
precio_compra y luego reescribirlos en esa misma zona?<br>
<br>
</blockquote>
<br></div>
Necesitas más información en cuanto a la estructura o formato del fichero al igual que el "tipo" o modo de fichero: texto o binario. Sugiero que consultes nuestro curso sobre el Manejo de Ficheros en nuestra página; puedes ir directamente a: <a href="http://c.conclase.net/ficheros/index.php" target="_blank">http://c.conclase.net/<u></u>ficheros/index.php</a><br>

<br>
Si se trata de un fichero binario con una longitud fija de los registros y por tanto de los campos, entonces no debería resultarte difícil acceder justamente a ese "campo" tanto para leer de ello como para modificarlo. Por ejemplo,<br>

<br>
[id_producto (4 bytes)] [nombre (64 bytes)] [precio_compra (4)] [precio_venta (4)] [stock (4)] [num_unidades (4)]<br>
<br>
Entonces el problema se convierte en una cuestión de calcular el desplazamiento (en bytes) desde el comienzo del fichero. De hecho, podemos pensar que el fichero no es más que un array y por tanto, nos interesa calcular el "índice" para llegar a tal byte. En el ejemplo anterior, cada registro es de 84 bytes. Si queremos calcular el desplazamiento para acceder al campo 'stock'  del tercer registro, entonces tenemos que hacer unos cálculos:<br>

<br>
- Nos saltamos los dos primeros registros de 84 bytes cada uno: 2 * 84 = 168 bytes.<br>
- Nos saltamos los primeros 76 bytes = 4 + 64 + 4 + 4.<br>
- Su suma es el desplazamiento total: 168 + 76 = 144 bytes.<br>
<br>
Al realizar un cambio de posición de 144 bytes desde el comienzo del fichero, nuestro cursor del fichero se ubica al comienzo de la información que representa la cantidad de artículos en existencia (stock). Ahora podemos acceder a los 4 bytes que representan la cantidad guardada.<br>

<br>
Si se trata de un fichero de texto y se guarda la información con diferentes longitudes, entonces no podemos acceder tan directamente. Asimismo, la modificación de la información puede conllevar a un cambio de longitud o tamaño de caracteres y por tanto estaríamos reemplazando la información que no queremos modificar, pero que existe consecutivamente a la que sí queremos modificar.<br>

<br>
La solución es,<br>
1. Copiar la información posterior,<br>
2. Modificar la información que nos interesa, y<br>
3. Volver a copiar la información posteriormente.<br>
<br>
También podemos crear un nuevo fichero y realizar varias copias del fichero original; esto es,<br>
<br>
1. Copiar del fichero original al nuevo toda la información hasta llegar a la información a modificar,<br>
2. Copiar la nueva información que nos interesa al nuevo fichero, y<br>
3. Copiar del fichero original al nuevo toda la información posterior a la modificación.<br>
<br>
<br>
Espero que todo esto te oriente.<br>
<br>
Steven<br>
<br>
<br>
______________________________<u></u>_________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/<u></u>mailman/listinfo/cconclase_<u></u>listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/<u></u>index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br></div>