• Miércoles 6 de Noviembre de 2024, 02:40

Autor Tema:  Manejo De Archivos  (Leído 2262 veces)

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Manejo De Archivos
« en: Martes 21 de Noviembre de 2006, 02:37 »
0
Buenas

Estoy haciendo un programa y ahora quiero poder guardar y abrir informacion, la idea es la siguiente:
q cuando se ponga guardar pueda crear un archivo y llenarlo de 1 o 0 de acuerdo a lo q se haya hecho en el programa, y q cuando ponga para abrir un archivo, lo lea y de acuerdo a los 1 y 0 me haga unos cambios en el programa...

Por eso lo q necesitaria saber es como abro y escribo un archivo, tambien si se puede poner un boton q te habra la ventana para buscar el archivo a abrir o donde guardarlo como hace la mayoria de los programas...

Desde ya muchas gracias

Adrian
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Anonymous

  • Visitante
Re: Manejo De Archivos
« Respuesta #1 en: Martes 21 de Noviembre de 2006, 14:41 »
0
Para crear y abrir archivos utiliza las funciones de manejo de ficheros. Por ejemplo, para crear o abrir archivo se utiliza la función "fopen". Busca en la ayuda los parámetros que necesitas para usarla.

Para que te salga la ventana para buscar donde guardar el archivo o donde buscarlo utiliza las dos primeras componentes que aparecen en la paleta de componentes "Dialogs", ellas son "OpenDialog" y "SaveDialog" .

Saludos a todos.  :hola:

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #2 en: Martes 21 de Noviembre de 2006, 15:34 »
0
Ok, gracias por la informacion
Pude hacer q cuando toque el boton abrir se me abra el explorador, le puse un filtro y funciona justo como deseo, ahora mi duda es donde me devuelve la ruta, o sea, cuando yo selecciono donde quiero guardarlo
es decir, si yo en la ventana eligo guardarlo en una carpeta y con un determinado nombre, ya sea:  C:\XXX\YYY\Archivo.zzz   cuando presiono el boton guardar no pasa nada y no puedo encontrar el evento q maneja cuando se presiona el boton, y tambien quisiera saber como puedo obtener la ruta elegida asi despues trabajo con el Fopen.

Gracias de nuevo

Adrian
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #3 en: Martes 21 de Noviembre de 2006, 16:16 »
0
Revisando un poco en el foro encontre otra forma de manejar archivos que parece mas facil q con el Fopen:

Código: Text
  1.   TStringList *Archivo = new TStringList();
  2.  
  3.   //Puedes ir añadiendo linea a linea la informacion en el archivo
  4.   Archivo->Append( "primera linea" );
  5.   Archivo->Append( "segunda  linea" );
  6.   Archivo->Append( "tercera linea" );
  7.  
  8.   //Guardar le archivo
  9.   Archivo->SaveToFile( "c:\\Carpeta\\Prueba.txt" );
  10.  
  11.   //Para abrir el archivo
  12.   Archivo->LoadFromFile( "c:\\Carpeta\\Prueba.txt" );
  13.  
  14.   //Para leer todo el archivo
  15.   Archivo->Text;   //te lo da como AnsiString todo el contenido del archivo
  16.  
  17.   //Para leer linea a linea
  18.   Archivo->Strings[0];   //Primera linea
  19.   Archivo->Strings[1];   //Segunda llinea
  20.   Archivo->Strings[2];   //Tercera linea
  21.  
  22.   //Liberar memoris
  23.   delete Archivo;
  24.  

Ahora el tema seria de como cambio el nombre del archivo en la instruccion: Archivo->LoadFromFile( "c:\\Carpeta\\Prueba.txt" );
O si con el explorador al presionar el boton abrir te devuelve la ruta del archivo directamente....

Cualquier cosa que no entiendan diganmen y tratare de explicarles...
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #4 en: Martes 21 de Noviembre de 2006, 18:31 »
0
Citar
Ahora el tema seria de como cambio el nombre del archivo en la instruccion: Archivo->LoadFromFile( "c:\\Carpeta\\Prueba.txt" );
para eso utiliza el OpenDialog y SaveDialog

Código: Text
  1.  
  2.     if (SaveDialog1->Execute()){
  3.         //SaveDialog1->FileName                  Esto te devuelve la direccion que escogiste
  4.     }
  5.  
  6.  

Código: Text
  1.  
  2.     if (OpenDialog1->Execute()){
  3.         //OpenDialog1->FileName                  Esto te devuelve la direccion que escogiste
  4.     }
  5.  
  6.  

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #5 en: Martes 21 de Noviembre de 2006, 19:13 »
0
Perdona mi inexperiencia, pero lo q yo quiero (para empezar) es obtener la ruta del archivo, o sea q cuando se abra la ventana, se eliga donde se quiere guardar, se ponga el nombre y se presione guardar obtenga la ruta, al precionar cancelar q no pase nada.

Lo q estoy haciendo segun lo q me pusiste es por ahora copiar la ruta en un label para probar si funciona de esta manera
Código: Text
  1.   if (Guardar->Execute()){
  2.        Label1->Caption = Guardar->FileName;
  3.   }
  4.  
Lo q me sucede es q no encuentro en q evento poner ese codiga para q funcione bien, si lo pongo en el Close del SaveDialog funciona mal, al igual q en todos los q probe...
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #6 en: Martes 21 de Noviembre de 2006, 19:17 »
0
Listo, lo hice andar, jeje, lo puse en el evento OnCanClose del SaveDialog y solamente esta parte
       Label1->Caption = Guardar->FileName;
Sin el if, y parece funcionar correcto, cualquier cosa les aviso, gracias...
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #7 en: Martes 21 de Noviembre de 2006, 19:29 »
0
Citar
   if (SaveDialog1->Execute()){
       //SaveDialog1->FileName                  Esto te devuelve la direccion que escogiste
   }


CODE

   if (OpenDialog1->Execute()){
       //OpenDialog1->FileName                  Esto te devuelve la direccion que escogiste
   }
El IF es para que cuando se ejecute el Save o el open se haga algo.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #8 en: Martes 21 de Noviembre de 2006, 19:53 »
0
No importa, ya me las arregle para hacer andar todo y funciona perfecto  :D

ahora estoy frente a un pequeño problema, tengo un conjunto de numeros guardados en un string, ej: 012013001231 y quisiera saber como puedo hacer para leerlo uno por uno...

por ejemplo si el primero es un 0 hacer algo, si es un 1 otra cosa, etc, y despues pasar al segundo y asi sucesivamente...

ya se como hacer para identificar el numero, pero no se me ocurre como ahcer para analizar todos los numeros por separados...
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Señor X²

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #9 en: Viernes 8 de Diciembre de 2006, 06:44 »
0
hola, creo que la forma más fácil sería con el operador [],  por ejemplo, si tenés la cadena A (fijate si la cadena es de tipo String o CString, las CString permiten el uso del operador [], de no ser así, tendrías que convertirla a CString, con el método c_str(): por ejemplo:

si tenés la cadena en un string:
Código: Text
  1.  
  2. char aux[10]="";    // declaramos el cstring auxiliar con un tamaño de 10 posiciones
  3. strcpy(aux, A.c_str());    // copiamos a "aux" el String y para que sea un CString con el metodo c_str()
  4.  
  5.  
entonces te podés referir a cada posición de la cadena con el operador de la siguiente forma:
Código: Text
  1.  
  2. if( aux[0] == '1'){
  3. // accion si verdadero
  4. }
  5.  
  6. if( aux[1] == '3'){
  7. // accion si verdadero
  8. }
  9.  
  10. if( aux[2] == '2'){
  11. // accion si verdadero
  12. }
  13.  
  14.  

creo que con eso andarías bien, cualquier cosa comentanos, saludos