modificacion de archivo y verificacion de existencia no cierra??? ayuda!!!

Iniciado por kerkox, 5 Marzo 2014, 06:01 AM

0 Miembros y 1 Visitante están viendo este tema.

kerkox

Hola que tal amigos, lo que sucede es que estoy haciendo un programa que modifica un archivo pero para poder modificarlo primero verifico que exista con el nombre que se va a modificar para no repetir
ejemplo:
*******************************************************
archivo original:                                    fichero.exe

archivo modificado o renombrado:         fichero2.exe

si existe   fichero2.exe   entonces Mostrar mensaje no se puede modificar ya que esta modificado

SINO entonces modificar o renombre por fichero2.exe
********************************************************

y luego hay otra opcion
que dice si desea reestablecerlo
*******************************************************
PARA RESTABLECER CON PREVIA MODIFICAION
archivo original:                                    fichero2.exe

archivo modificado o renombrado:        fichero.exe

si existe   fichero2.exe   entonces modificar o renombre por fichero.exe

SINO entonces  Mostrar mensaje no se puede modificar ya que NO SE HA MODIFICADO
******************************************************

EL PROBLEMA: cuando se realiza una de las opciones primero funciona, pero cuando regresa al menu para selecionar otra opcion no funciona porque muestra el mensaje de error de cada funcion

pero cuando cierro el programa y vuelvo a abrirlo funciona perfectamente la primera vez de ahi en adelante no funciona para nada

una de las funciones que utilizo para verificar si existe es la siguiente:

#include <fstream>
#include <iostream>

bool file_exists(const char * f){
    ifstream file;
    file.open(f);
    if(file.fail())
        return false;
    file.close();
    return true;
}
int main()
{
bool j;

bool j= file_exist("c:\\fichero2.exe");

if (j)
{
cout << "No se puede renombrar ya que esta renombreado" << endl;
}
else {
// se ejecuta los comandos de renombre
}

}


##############
Por ahora una solucion burda que he hecho es llamar a un archivo externo en bat para que me cierre el program y lo vuelva a abrir para la solucion pero si alguien me puede dar alguna idea se lo agradezco mucho

P.D si necesitan mas datos solo comenten

engel lex

dices "cuando regresa al menú" pero no veo ningún retorno al menú ni ciclos...
solo veo que lo abres y debe correr linealmente, terminar y cerrarse

puedes usar las etiquetas GeSHi para que el codigo sea más legible
Código (cpp) [Seleccionar]

#include <fstream>
#include <iostream>

bool file_exists(const char * f){
    ifstream file;
    file.open(f);
    if(file.fail())
        return false;
    file.close();
    return true;
}
int main()
{
bool j;

bool j= file_exist("c:\\fichero2.exe");

if (j)
{
cout << "No se puede renombrar ya que esta renombreado" << endl;
}
else {
// se ejecuta los comandos de renombre
}

}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

BlackM4ster

Código (cpp) [Seleccionar]
#include <fstream>
#include <iostream>

using namespace std;
bool file_exists(const char * f);

int main(){

if (file_exists("C:\\fichero2.exe")){
cout << "El archivo existe" << endl;
} else {
cout << "El archivo NO existe" << endl;
}

return 0;
}

bool file_exists(const char * f){
   fstream file(f);
   return file.good();
}


Aquí tienes tu código funcionando, tienes muchos fallos, revísalos

Editado: Añadida función más sencilla de Amchacon
- Pásate por mi web -
https://codeisc.com

amchacon

Código (cpp) [Seleccionar]
bool file_exists(const char * f){
  fstream file;
  file.open(f);
  if(file.fail())
      return false;
  file.close();
  return true;
}


Esta función se puede resumir a:

Código (cpp) [Seleccionar]
bool file_exists(const char * f){
  fstream file(f);
  return file;
}


O si te resulta más claro:

Código (cpp) [Seleccionar]
bool file_exists(const char * f){
   fstream file(f);
   return file.good();
}
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar