tal vez es una burrada lo que pongo pero es gratis :-)<br><div>básicamente lo que queres hacer es serializar y desserializar una estrucutra (o varias)</div><div>lo que podes hacer es pasa el puntero a void pero dentro castealo a byte (unsigned char) y lito</div>

<div>y lo mismo para leerlo pasa un puntero a void que apunta a la estructura y lees bytes que se meten dentro de la estructura en el mismo orden que fueron sacados.</div><div><br>David</div><div><br><div class="gmail_quote">

El 19 de octubre de 2009 15:57, Rubén Calabuig <span dir="ltr"><<a href="mailto:racalabuig@gmail.com">racalabuig@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Gracias por contestar:<br>
<br>
Estoy programando en C++.<br>
<br>
El problema es que no entiendo cómo utilizar las templates en este<br>
caso.<br>
<br>
El método en cuestión es el siguiente:<br>
<br>
//========================================================================<br>
// METODO    : bool guardarRegistro(void* reg, int tam)<br>
// ACCION    : Graba un registro en el archivo.<br>
// PARAMETROS: void* reg --> puntero a la estructura del registro.<br>
//             int tam   --> tamano en bytes de la estructura.<br>
// RETORNO   : true = exito / false = fracaso.<br>
//........................................................................<br>
// EJEMPLO   :<br>
//             if(archivo1.guardarRegistro(alumno, sizeof(alumno)))<br>
//             {<br>
//               cout << "registro grabado con exito" << endl;<br>
//             }<br>
//             else<br>
//             {<br>
//               cout << "no pido guardarse el registro" << endl;<br>
//             }<br>
//------------------------------------------------------------------------<br>
<br>
bool clsArchivo::guardarRegistro(void* reg, int tam)<br>
{<br>
  switch(estado)<br>
  {<br>
    case CREADO   : arch = fopen(nombre,"ab");<br>
                    write(reg,tam,1,arch);<br>
                    fclose(arch);<br>
                    return true;<br>
                    break:<br>
<br>
    case AGREGAR  :<br>
    case MODIFICAR: fwrite(reg,tam,,1,arch);<br>
                    return true;<br>
                    break:<br>
<br>
    default       : return false;<br>
  }<br>
}<br>
//===== FIN METODO =====================================================<br>
<br>
¿pdrías darme una mano?<br>
<br>
<br>
El lun, 19-10-2009 a las 10:46 -0300, David Fire escribió:<br>
<div><div></div><div class="h5">> hola<br>
> es C o C++?<br>
> si es C++ proba con templates<br>
> aparte que error te da?<br>
> David<br>
><br>
> El 19 de octubre de 2009 09:28, Rubén Calabuig <<a href="mailto:racalabuig@gmail.com">racalabuig@gmail.com</a>><br>
> escribió:<br>
>         Hola a todos:<br>
><br>
>         Estoy haciendo una clase, "clsArchivo", para instanciar<br>
>         objetos con<br>
>         archivos binarios asociados.<br>
><br>
>         La clase tiene tres atributos<br>
>           FILE* arch;     // puntero a una estructura FILE.<br>
>           char* nombre;   // puntero a una cadena generada<br>
>         dinamicamente para<br>
>                           // contener el nombre del archivo en disco.<br>
>           tEstado estado; // estado actual del archivo<br>
><br>
>         NOTA: tEstado es una enumeracion declarada de la siguiente<br>
>         forma:<br>
><br>
>         enum tEstado{DESASIGNADO,INDETERMINADO,INEXISTENTE,<br>
>                     CREADO,LEER,AGREGAR,MODIFICAR,CERRADO};<br>
><br>
><br>
>         Tods los métodos de acción sobre el archivo asociado,<br>
>         funcionan a la<br>
>         perfección, pero el problema se plantea cuando intento<br>
>         desarrollar<br>
>         métodos, que reciban como parámetros a estructuras que deben<br>
>         ser<br>
>         escritas o leidas.<br>
><br>
>         No puedo pasar un formato específico de estructura, ya que si<br>
>         así lo<br>
>         hiciera, mi clase no sería generérica. Entonces, pensé en<br>
>         utilizar<br>
>         punteros de tipo void pero no les encuentro la vuelta, de<br>
>         cualquier<br>
>         forma que los escriba, me dan error.<br>
><br>
>         Aclaro que estoy programando en el IDE Code::Blocks con el<br>
>         compilador<br>
>         gcc, tanto para entorno Windows como par Linux.<br>
><br>
>         Un ejemplo de prototipo sería el siguiente:<br>
><br>
>         tEstado clsArchivo::guardarRegistro(void* reg, int tam)<br>
><br>
>         Donde:<br>
>              void* reg --> es el puntero a la estructura.<br>
>              int tam   --> es el tamaño de la estructura.<br>
><br>
>         La pregunta concreta es cómo debe ser la función fwrite o<br>
>         fread, yo<br>
>         intenté lo siguiente:<br>
><br>
>         fread(reg,tam,1,arch)<br>
><br>
>         Pero me da error.<br>
><br>
>         Desde ya muchas gracias.<br>
><br>
><br>
>         --<br>
>         Rubén Alberto Calabuig<br>
><br>
><br>
><br>
>         _______________________________________________<br>
>         Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
>         <a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
>         Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
><br>
><br>
><br>
> --<br>
> (\__/)<br>
> (='.'=)This is Bunny. Copy and paste bunny into your<br>
> (")_(")signature to help him gain world domination.<br>
><br>
> _______________________________________________<br>
> Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
> <a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
> Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
--<br>
Rubén Alberto Calabuig<br>
<br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>(")_(")signature to help him gain world domination. <br><br>
</div>