Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2010
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 19
Ledian_Fdez Va por buen camino
Thumbs up 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);
Al ejecutar me da el siguiente error:
Access violation at address 326641F8 in module 'CC3260MT.DLL'. Write of address 00000000.

El fichero contiene lo siguiente:
Cita:
SERVER1
Pepe
mayo81
Salu2,
Ledian.

Última edición por Ledian_Fdez fecha: 16-02-2010 a las 22:46:59.
Responder Con Cita
  #2  
Antiguo 16-02-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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);
De todas formas usar fscanf en este caso... Mejor fgets.

Otra solución sería con streams, pero nunca he trabajado con ellas en C++ así que no puedo ponerte un ejemplo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 16-02-2010 a las 23:24:16.
Responder Con Cita
  #3  
Antiguo 16-02-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Thumbs up

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;
Si lo que quieres es guardar configuraciones, pues búscale un rato sobre archivos ini (TIniFile), y/o edición del registro (TRegistry), de windows.
Responder Con Cita
  #4  
Antiguo 17-02-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Ñuño Martínez Ver Mensaje

Otra solución sería con streams, pero nunca he trabajado con ellas en C++ así que no puedo ponerte un ejemplo.
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));
Saludos.
Responder Con Cita
  #5  
Antiguo 17-02-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 15:01:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi