"UTILIZO LENGUAJE VISUAL STUDIOS 2017 C++". Holo muy buenas, aquí traigo un código en el cual se basa en cargar los elementos agregados a un archivo binario y esta siendo trabajado en un proyecto de winapi,en este archivo se guardan todos los datos de una estructura llamada Contacto y EL ERROR ORCURRE cuando se empiezan a cargar los datos del contacto y me detiene justo en el punto donde marque en el código y me dice que no se pueden leer los caracteres de la cadena, otro dato que puedo ofrecerles sobre el error es que al parecer el programa me sigue introduciendo datos "basura", bueno realmente me deja como espacios vacíos en cada dato y los toma como si fueran algún otro elemento de mi lista aquí también dejare el código que uso para guardar los datos del contacto, espero y puedan ofrecerme su ayuda, gracias.
void GuardarContacto(HWND hDlg) {
aux = origen;
ofstream Archivo;
Archivo.open(
"C:\\Users\\artur\\OneDrive\\Documentos\\Visual Studio 2017\\Projects\\Proyecto Final Programacion 2\\Proyecto Final Programacion 2\\MisContactos.bin",
ios::trunc | ios::out | ios::binary);
if (Archivo.is_open()) {
while (aux != NULL) {
Archivo.write(reinterpret_cast<char *>(aux), sizeof(Contacto));
aux = aux->sig;
}
Archivo.close();
return;
}
else {
MessageBox(hDlg, "No se pudo abrir el archivo", "ERROR", MB_ICONERROR | MB_OK);
}
return;
}
void CargarContacto(HWND hDlg) {
aux = origen;
ifstream Archivo;
Archivo.open(
"C:\\Users\\artur\\OneDrive\\Documentos\\Visual Studio 2017\\Projects\\Proyecto Final Programacion 2\\Proyecto Final Programacion 2\\MisContactos.bin",
ios::binary | ios::in);
if (Archivo.is_open()) {
while (!Archivo.eof()) {
if (origen == NULL) {
origen = new Contacto;
Contacto *temp = new Contacto;
Archivo.read(reinterpret_cast<char*>(temp), sizeof(Contacto));
origen->Nombre = temp->Nombre;
origen->Apellido = temp->Apellido;
origen->Calle = temp->Calle;
origen->EntreCalles = temp->EntreCalles;
origen->Correo = temp->Correo;
origen->Colonia = temp->Colonia;
origen->Municipio = temp->Municipio;
origen->Estado = temp->Estado;
origen->Pais = temp->Pais;
origen->NumTelefono = temp->NumTelefono;
origen->NumCP = temp->NumCP;
strcpy(origen->Foto1, temp->Foto1);
strcpy(origen->Foto2, temp->Foto2);
origen->ant = NULL;
origen->sig = NULL;
delete reinterpret_cast<char*>(temp);
continue;
}
aux = origen;
while (aux->sig != NULL)
aux = aux->sig;
aux->sig = new Contacto;
Contacto *temp = new Contacto;
Archivo.read(reinterpret_cast<char*>(temp), sizeof(Contacto));
aux->sig->ant = aux;
aux->sig->sig = NULL;
aux = aux->sig;
aux->Nombre = temp->Nombre;
aux->Apellido = temp->Apellido;
aux->Calle = temp->Calle;
aux->EntreCalles = temp->EntreCalles;
aux->Correo = temp->Correo;
aux->Colonia = temp->Colonia;
aux->Municipio = temp->Municipio;
aux->Estado = temp->Estado;
aux->Pais = temp->Pais;
aux->NumTelefono = temp->NumTelefono;
aux->NumCP = temp->NumCP;
strcpy(aux->Foto1, temp->Foto1);
strcpy(aux->Foto2, temp->Foto2);
delete reinterpret_cast<char*>(temp);
//Justo en delete reinterpret_cast<char*>(temp); ocurre el error por lo que les mencione antes.
}
Archivo.close();
return;
}
//MessageBox(hDlg, "No pueden cargarse los contactos", "ERROR", MB_ICONERROR | MB_OK);
return;
}