FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ficheros de texto !!!
Hola amigos de este foro y disculpa mi insistencia.
Es que soy nuevo progrando en C++, y todo lo trato de comparar con Delphi que es en lo que mas he trabajado. Me pudieran dar alguna ayuda con este código. Código:
#include <stdio.h> . . . FILE *fichero; String Host, User, Pass; fichero= fopen("C:\\conect.dll", "r"); if (fichero!= NULL) { fscanf (fichero, "%s", Host); fscanf (fichero, "%s", User); fscanf (fichero, "%s", Pass); } else ShowMessage("El archivo de conexion no se pudo abrir"); fclose(fichero); Access violation at address 326641F8 in module 'CC3260MT.DLL'. Write of address 00000000. El fichero contiene lo siguiente: Cita:
Ledian. Última edición por Ledian_Fdez fecha: 16-02-2010 a las 22:46:59. |
#2
|
||||
|
||||
La verdad es que comparar C++ con Object Pascal... ¡Buf! Son dos filosofías muy diferentes, a pesar de sus similitudes.
Por ejemplo, el error se produce porque String es una clase de objeto mientras que fscanf trabaja con punteros a char, no con objetos String. Es decir: estas mezclando C++ con C, y aunque no lo parezca, son dos lenguajes muy diferentes (mucho más que Pascal y Object Pascal) y no se llevan muy bien. Deberías buscar un buen libro de programación C o de C++. Te recomiendo al autor Herbert Schild. De todas formas, una posible solución sería: Código:
#include <stdio.h> . . . FILE *fichero; char Host[MAX], User[MAX], Pass[MAX]; fichero= fopen("C:\\conect.dll", "r"); if (fichero!= NULL) { fscanf (fichero, "%s", &Host); fscanf (fichero, "%s", &User); fscanf (fichero, "%s", &Pass); } else ShowMessage("El archivo de conexion no se pudo abrir"); fclose(fichero); Otra solución sería con streams, pero nunca he trabajado con ellas en C++ así que no puedo ponerte un ejemplo. Última edición por Ñuño Martínez fecha: 16-02-2010 a las 23:24:16. |
#3
|
|||
|
|||
Si intentas cargar un simple fichero de texto y estas en C++, ps podrías usar el objeto “TStringList”
Más o menos seria así: Código:
String Host, User, Pass; TStringList* liss=new TStringList; liss->LoadFromFile("c:\\mi archivo.txt"); Host=liss->Strings[0]; //suponiendo que Host es la primera línea del txt User=liss->Strings[1]; //suponiendo que User es la segunda línea del txt Pass=liss->Strings[2]; //suponiendo que Pass es la tercera línea del txt delete liss; |
#4
|
||||
|
||||
Cita:
Código:
#include <fstream.h> char Host[256]; char User[256]; char Pass[256]; fstream fs("c:\\conect.dll", ios::in); fs.getline(Host, sizeof(Host)); fs.getline(User, sizeof(User)); fs.getline(Pass, sizeof(Pass)); |
#5
|
||||
|
||||
Gracias escafandra.
Por cierto, Ledian_Fdez, que voy a hacerte una recomendación para gestionar los errores. Ya que C++ dispone de un sistema de excepciones similar al de Object Pascal te recomiendo que lo uses. Es decir, cuando detecta el error ("fichero == NULL") que lance una excepción y pon un "try { ... } catch (...) { ... }" en el main para mostrarlo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
leer palabras de ficheros de texto | alba13 | OOP | 10 | 21-10-2007 16:15:15 |
Pasar ficheros binarios a texto | PTW | Varios | 13 | 01-06-2007 21:56:22 |
Comandos especiales {$H} en ficheros de texto | morodo | Lazarus, FreePascal, Kylix, etc. | 0 | 27-01-2007 22:10:17 |
Correo Web y Ficheros de Texto. | marcoszorrilla | Varios | 29 | 06-09-2006 22:51:55 |
Tema: Ficheros de texto | Tonio | Varios | 5 | 07-05-2003 15:56:24 |
|