SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: kertxo en Miércoles 13 de Junio de 2007, 00:35

Título: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 00:35
Hola a todos.Estoi haciendo un proyecto para la universidad en c++. Es un programa de gestion de ficheros.Y me he quedado atascado con el instalador, tb hecho en c++. Uso la sentencia sytem("copy \"rutaorigen\" \"rutadesino\"")
Si hago esto:
     
 mkdir("C:\\Alsa");    //CREA LA CARPETA Alsa EN C:\

 system("copy \"Viajes.dat\"  \"C:\\Alsa\\Viajes.dat\""); // COPIA VIAJES.DAT EN EL DESTINO

Hasta aqui todo bien.Mi pregunta es como puedo hacer que la ruta de destino se una variable?
osea pasar  

AnsiString o string rutavariable="C: \\Alsa";
system("copy \"viajes.dat   rutavariable ");

Evidentemente rutavariable la saco de un DirectoryListBox no le asigno un valor asi pero lo k me interesa es saber si puedo pasar una variable a system copy y k tipo deberia ser.

Muchas gracias de antemano
Título: Re: Ayuda System(copy ) C++
Publicado por: LeGatoRojo en Miércoles 13 de Junio de 2007, 01:33
pues system utiliza unicamente una cadena como parametro, asi que tendras que concatenar.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 02:42
concatenar el que? si luego tendre que pasarle una variable no? el tema esta ay
en k variable pasar y como
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 08:11
Cita de: "kertxo"
concatenar el que? si luego tendre que pasarle una variable no? el tema esta ay
en k variable pasar y como
Si pones el nombre de una variable dentro de una cadena lo toma tal cual como si fuera texto ...
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 11:08
Cita de: "Eternal Idol"

Si pones el nombre de una variable dentro de una cadena lo toma tal cual como si fuera texto ...
Eso ya se, pero lo que digo es si que concateno dos strings luego tendere k pasar la variable string ala sentencia system y eso es lo k no se
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 11:18
Cita de: "kertxo"
Eso ya se, pero lo que digo es si que concateno dos strings luego tendere k pasar la variable string ala sentencia system y eso es lo k no se
Esta bien que lo sepas pero no se nota si haces esto:

AnsiString o string rutavariable="C: \\Alsa";
system("copy \"viajes.dat rutavariable ");

Una forma para que lo veas claro:
Código: Text
  1.  
  2. string sysCmd = "copy";
  3. string rutavariable = "C:\\Alsa";
  4. string archivo = "viajes.dat";
  5. sysCmd += " ";
  6. sysCmd += archivo;
  7. sysCmd += " ";
  8. sysCmd += rutavariable;
  9. //printf("%s\r\n", sysCmd.c_str());
  10. //system(sysCmd.c_str());
  11.  
  12.  
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 14:37
El tema es que pensaba que habria alguna manera de meter una variable tomando el contenido de la variable, veo que lo que hecho ha sido esto:

  AnsiString rutaansi;
  if (RadioButton1->Checked==true)
    rutaansi="C:\\Alumno\\Alsa\\";
  else
    if (DirectoryListBox1->Directory=="C:\\")
        rutaansi="C:\\Alsa\\";
      else
        rutaansi=DirectoryListBox1->Directory+"\\Alsa\\";

  ruta=rutaansi.c_str();
  int x;
  x=mkdir(ruta.c_str());
  string rutatempvia="copy ";
  rutatempvia+="Viajes.dat ";
  rutatempvia+=ruta.c_str();
  rutatempvia+="Viajes.dat ";



  system(rutatempvia.c_str());

pero nose porque no va, si quito el DirectoryListBox y coloco un edit y por ese edit meto la ruta de destino correctamente por ejemplo: "C:\\Nueva carpeta\\Alsa\\ si que  me lo copia pero alguien sabe el motivo de porque al poner el Directory no lo hace??

Pd: los espacios estan puesto aunque casi no se aprecien.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 14:49
Depura tu programa, sino sabes usar el depurador usa algun tipo de mensaje (printf, MessageBox, OutputDebugString) para saber que cadena se esta formando cuando no funciona.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 15:24
He usado el debbuger y el MessageBox y ambos me dan una cadena correcta, justamente la k deberia ser.La cadena es la misma con el edit que con el DirectoryListBox.
El problema debe de estar en el Directory pk aceindo lo mismo kon un edit si que se copia.

Con el codigo asi una cadena queda por ejemplo de la siguiente manera:

"copy Viajes.dat C:\\Alsa\\Viajes.dat"


Por cierto nose si influira ruta es de tipo AnsiString aunque tambien lo he probado con string y el resultado es el mismo.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 16:03
¿Que diferencia hay en
  ruta=Edit1->Text.c_str();
  o
  ruta=DirectoryListBox1->Directory.c_str();

Si ambos devuelven el mismo tipo de dato pero si uso el directory no va y si uso el edit si
??
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 16:17
Seguramente la cadena no es EXACTAMENTE igual, tal vez haya barras de mas o menos por ejemplo ... lo mas importante es la cadena final, la que se le pasa a system si son iguales como decis (que es imposible) no tiene importancia de que tipo de control vengan, lo unico que importa es la cadena final. Comproba byte por byte hasta encontrar la diferencia.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 17:06
Las cadenas son identicas byte a byte de hecho he puesto una condicion
If (Edit1->Text.c_str()==DirectoryListBox1->Directory.c_str())
  {
     Aqui va el codigo de copiado
  }
else
  MessageDlg ("La ruta no es igual",mtWarning,TMsgDlgButtons() << mbOK,0);

Y no funciona porque uso el DirectoryListBox1 para algo

Osea que es seguro que al usar el DirectoryListBox para lo que sea (bien asignar el direcctorio a algo o hacer alguna comparacion) algo ocurre que impide que se copie el archivo

Me estoi volviendo loco.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 18:17
No digo esas dos cadenas sino la cadena final (la que le pasas a system) cuando usas tanto Edit1 como DirectoryListBox1.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 18:31
si la que yega a system es identica tb lo he comprobado un monton de veces.
Es que no se me ocurre que puede ser.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 19:17
A ver, si fuera identica funcionaria ambas veces, es imposible que siendo la misma no funcione siempre.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 19:22
Ah, una cosa que puede provocar esa diferencia es que estes usando viajes.dat sin ruta y ese DirectoryListBox1 cambie el directorio actual  :) Si usas paths completos seguro que te funciona.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 21:17
Si los he comparado con un if y el resultado del if es true sera k si son iguales no?
asik por ay no van los tiros, sera otra cosa
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Miércoles 13 de Junio de 2007, 23:44
Ya he probado aponer la ruta completa del origen y tampoco es eso. Eske nose me ocurren mas cosas? nose si usar algun otro componente para acerlo.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Miércoles 13 de Junio de 2007, 23:48
Depuralo. Si queres adjunta el ejecutable y tambien podes usar CopyFile en vez de system ...
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 10:48
No se usar esa sentencia, Podrias explicarme un poko, que libreria hace falta para esa?
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 12:04
Cita de: "kertxo"
No se usar esa sentencia, Podrias explicarme un poko, que libreria hace falta para esa?
¿Lo depuraste? Es la manera mas facil de ver que pasa.

CopyFile (http://msdn2.microsoft.com/en-gb/library/aa363851.aspx) es una funcion de la API de Windows a la cual le pasas tres parametros, el primero es el archivo que ya existe, el segundo el que queres crear y el tercero si queres que falle al existir el archivo que queres que crear.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 12:56
Si lo he depurado con el debbuger y esk no veo nada mal, incluso he probado con CopyFile pero en el momento que use para lo que sea el  DirectoryList¡Box falla

 if (RadioButton1->Checked==true)
    rutaansi="C:/Alumno/Alsa/";
  else
    if (DirectoryListBox1->Directory=="C:/")
        rutaansi="C:/Alsa/";
      else
        rutaansi=DirectoryListBox1->Directory+"/Alsa/";



  //rutaansi=Edit1->Text.c_str();
  int x;
  x=mkdir(rutaansi.c_str());
  rutaansi+="Viajes.dat";
  const char* rutadestres=rutaansi.c_str();
  CopyFile("Viajes.dat",rutadestres,false);

Si uso el Edit perfecto y si el RadioButton1 tb porque no coje la direccion del Directory. Pero en el momento que uso el Directory falla aun poniendo la misma ruta que para el RadioButton1 no entiendo que puede pasar, las cadenas son iguales en ambos casos.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 13:04
En el primer parametro a CopyFile no estas poniendo una ruta sino un nombre de archivo, si ese DirectoryListBox1 cambia el directorio actual entonces no funcionara. Comproba el valor de retorno de CopyFile.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 13:15
Perdon era asi CopyFile("\\Viajes.dat",rutadestres,false);
Ya que el archivo esta en la propia carpeta del programa, no pongo la ruta completa pq se ejecutara desde un cd y depende de donde metas el cd la unidad puede variar
(E:, D:....) no? si no como puedo hacer que coja la ruta desde donde se ejecuta?
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 13:29
Cita de: "kertxo"
Perdon era asi CopyFile("\\Viajes.dat",rutadestres,false);
Ya que el archivo esta en la propia carpeta del programa, no pongo la ruta completa pq se ejecutara desde un cd y depende de donde metas el cd la unidad puede variar
(E:, D:....) no? si no como puedo hacer que coja la ruta desde donde se ejecuta?
Eso sigue dependiendo de la directorio actual que no tiene que ser siempre el directorio donde se ejecuta el programa especialmente si ese control la cambia.

Fijate si poniendo la ruta completa funciona.

Si de esa manera funciona sabes que la diferencia es la que te dije en el primer mensaje de esta (segunda) pagina y podes usar GetModuleFileName para obtener el path completo (incluyendo el nombre del ejecutable).
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 13:38
Si, poniendo la ruta completa funciona, justo esta probando el GetModuleFileName
pero nose muy bien como va aber si consigo con esto hacerlo, lo unico que esta funcion devuelve el path del ejecutable no? despues abria que quitarle el nombre del ejecutable no?
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 14:19
Cita de: "kertxo"
Si, poniendo la ruta completa funciona, justo esta probando el GetModuleFileName
pero nose muy bien como va aber si consigo con esto hacerlo, lo unico que esta funcion devuelve el path del ejecutable no? despues abria que quitarle el nombre del ejecutable no?
Si, con poner un 0 justo despues de la ultima \ tenes el path. Y para que te lo devuelva le pasas 0 como primer parametro.

Por cierto, tal vez haya alguna propiedad de ese control que controle el que cambie o no el directorio actual.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 14:28
Lo siento me he liado.
GetModuleFileName devuelve una path completa: C:\.......\Project1.exe
incluyendo el nombre del .exe. Lo que deberia hacer es quitar el Project1.exe y eso ya nose como hacerlo.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 14:31
Cita de: "kertxo"
Lo siento me he liado.
GetModuleFileName devuelve una path completa: C:\.......\Project1.exe
incluyendo el nombre del .exe. Lo que deberia hacer es quitar el Project1.exe y eso ya nose como hacerlo.
Con poner un 0 justo despues de la ultima \ tenes el path.

Las cadenas esta delimitada por un cero que es el caracter de terminacion, reemplaza al caracter siguiente a la ultima \ con un 0.

Si tenes:
C:\\Dir1\\Dir2\\Ejecutable.exe Entonces usando un puntero al byte (char * en este caso) que contiene la E le das como nuevo valor 0.

Por cierto, tal vez haya alguna propiedad de ese control que controle el que cambie o no el directorio actual.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 16:47
Ya me sale MUCHAS GRACIAS por tu ayuda en los agradcimientos t mencionare ati y al foro.
Lo unico k aorateng k pasar la ruta dond se han instalado los ficheros y nose, me casca al poner la variable. Esque esto de la rutas no lo domino demasiado.

El instalador a quedado asi:

if (RadioButton1->Checked==true)
    rutaansi="C:/Alumno/Alsa/";
  else
    if (DirectoryListBox1->Directory=="C:\\")
        rutaansi="C:\\Alsa\\";
      else
        rutaansi=DirectoryListBox1->Directory+"\\Alsa\\";

  const int p=64;//CABIARLA A LA LONGITUD DEFINITIVA
  char ruta[p];
  char drive[MAXDRIVE];
  char dir[61];
  int flags;

  GetModuleFileName(NULL,ruta,p);
  flags=fnsplit(ruta,drive,dir,NULL,NULL);

  string sdrive=drive;
  string sdir=dir;
  string rutaorigen=sdrive;
  rutaorigen+=sdir;

  string rutaovia=rutaorigen+"Viajes.dat";
  string rutaores=rutaorigen+"Reservas.dat";
  string rutaoaut=rutaorigen+"Autobuses.dat";
  string rutaoexe=rutaorigen+"Project1.exe";
  string rutaotxt=rutaorigen+"leeme.text";


  int x;
  x=mkdir(rutaansi.c_str());

  string rutadestvia=rutaansi.c_str();
  string rutadestres=rutaansi.c_str();
  string rutadestaut=rutaansi.c_str();
  string rutadestexe=rutaansi.c_str();
  string rutadesttxt=rutaansi.c_str();

  rutadestvia+="Viajes.dat";
  rutadestres+="Reservas.dat";
  rutadestaut+="Autobuses.dat";
  rutadestexe+="Project1.exe";
  rutadesttxt+="leeme.txt";

  CopyFile(rutaovia.c_str(),rutadestvia.c_str(),false);
  CopyFile(rutaores.c_str(),rutadestres.c_str(),false);
  CopyFile(rutaoaut.c_str(),rutadestaut.c_str(),false);
  CopyFile(rutaoexe.c_str(),rutadestexe.c_str(),false);
  CopyFile(rutaotxt.c_str(),rutadesttxt.c_str(),false);


y la lectura es asi:

void nucleo::guardaralficherores()
{
        ofstream ficherores ("C:\\Alsa\\Reservas.dat");
        mapreservas.guardar(ficherores);
}
void nucleo::leerdelficherores()
{
        ifstream ficherores ("C:\\Alsa\\Reservas.dat");
        mapreservas.leer(ficherores);

y nose como poner ay una variable (que tiene que ser global por estar en otro formulario)
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 16:57
Cita de: "kertxo"
Ya me sale MUCHAS GRACIAS por tu ayuda en los agradcimientos t mencionare ati y al foro.
Lo unico k aorateng k pasar la ruta dond se han instalado los ficheros y nose, me casca al poner la variable. Esque esto de la rutas no lo domino demasiado.

De nadas  B)

Usa un tamaño mayor para los buffer que usen GetModuleFileName, MAX_PATH por lo menos e inicializalos a cero con ZeroMemory (o memset).

Si te sigue dando error depuralo y decinos exactamente en que linea da el error, sino es muy dificil ayudarte.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 17:03
Si le pongo MAX_PATH me salen despues d la ruta muchos caracteres raros y no ejecuta bien, le doi 64 porque es la ruta donde esta ahora:
C:\Documents and Settings\Pilates\Escritorio\Nueva carpeta3\pro

Luego le dare menos porque estara en por ejemplo E:\ejcutable\

El error me lo de la en la linea de lectura del fichero
 
    ifstream ficherores ("C:\\Alsa\\Reservas.dat");

Porque nose como porner hay la ruta del donde se han instalado

  ifstream ficherores (variable donde se han instalado);
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 18:23
Cita de: "kertxo"
Si le pongo MAX_PATH me salen despues d la ruta muchos caracteres raros y no ejecuta bien, le doi 64 porque es la ruta donde esta ahora: Luego le dare menos porque estara en por ejemplo E:\ejcutable\

Eso de 64 o menos no sirve, el ejecutable puede estar en cualquier lado. ¿Usaste ZeroMemory para inicializar todo a cero como te dije?

Cita de: "kertxo"
El error me lo de la en la linea de lectura del fichero
ifstream ficherores ("C:\\Alsa\\Reservas.dat");

¿Que error te da ahi? ¿No abre el archivo?

Cita de: "kertxo"
Porque nose como porner hay la ruta del donde se han instalado
ifstream ficherores (variable donde se han instalado);

¿No es rutaansi donde esta el directorio de instalacion?
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 18:41
Si esta en rutaansi, pero ruta ansi es una variable extern de tipo AnsiString
y lo k se le pasa a ifstream es un char *

y nose komo pasarlo pk la funcion .c_str() del Ansi no me sale al ponerlo.

Y en cuanto al memset l ohe probado pero no se usar esa funcion

De todas formas la ruta completa esta en rutadesvia, rutadestres y rutadesaut
para cada fichero
Son extern tb de tipo string y si compilo sin pasar nada a la funcion ifstream me da linker error en cada uno de ellos
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 18:47
Cita de: "kertxo"
Si esta en rutaansi, pero ruta ansi es una variable extern de tipo AnsiString
y lo k se le pasa a ifstream es un char *

y nose komo pasarlo pk la funcion .c_str() del Ansi no me sale al ponerlo.

Y en cuanto al memset l ohe probado pero no se usar esa funcion
c_str existe en AnsiString, trata de compilarlo. Y memset se usa pasandole primero el puntero al buffer, despues el caracter (0 en este caso) y por ultimo la cantidad de veces que queremos que escriba ese caracter en este caso MAX_PATH.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 18:51
De todas formas la ruta completa esta en rutadesvia, rutadestres y rutadesaut
para cada fichero
Son extern tb de tipo string y si compilo sin pasar nada a la funcion ifstream me da linker error en cada uno de ellos
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 19:22
He consegido que no me de linker error pero aora me dice
Project Project1.exe raised exception class EPrivilege with message"Privileged Instruction". Process stopped. Use Step or Run continue.

y lo tengo asi: el instalador:
TForm2 *Form2;
AnsiString rutaansi;         //////VARIABLES GLOBALES
string rutadestvia;
string rutadestres;
string rutadestaut;

y el resto del instalador igual y el nucleo que es de donde llamo a leer ficheros:

#include "nucleo.h"
#include <map>
#include <deque>
#include <string>
#include <string.h>

//---------------------------------------------------------------------------
extern string rutadestvia;
extern string rutadestres;
extern string rutadestaut;
contenedorreservas nucleo::mapreservas;
ContenedorAutobus nucleo::mapautobuses;
contenedorviajes nucleo::dequeviajes;
using namespace std;


void nucleo::guardaralficherores()
{
        char *r;
        strcpy(r,rutadestres.c_str());           ////FUNCION DE ESCRITURTA A FICHERO
        ofstream ficherores ®;
        mapreservas.guardar(ficherores);
}
void nucleo::leerdelficherores()
{
        char *r;
        strcpy(r,rutadestres.c_str());      //////////FUNCION DE LECTURA DE FICHERO
        ifstream ficherores ®;
        mapreservas.leer(ficherores);
}

Que puede ser???
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 19:33
Eso NO tiene ningun sentido y por eso da una excepcion, si podes pasarle a strcpy rutadestres.c_str() tambien se la podes pasar a ofstream. Da una excepcion por usar un puntero no inicializado r (apunta a cualquier lado).

Esto tiene que funcionar:
ofstream ficherores(rutadestres.c_str());

A lo sumo necesitaras hacer un casting a char *.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 19:55
Tenias razon, ahora si que lo coje pero calro lo coje solo si instalo el programa porque sino el contenido de la variable se destruye al salir del programa existe alguan forma de guardar las direcciones en algun sitio?
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 20:36
Cita de: "kertxo"
Tenias razon, ahora si que lo coje pero calro lo coje solo si instalo el programa porque sino el contenido de la variable se destruye al salir del programa existe alguan forma de guardar las direcciones en algun sitio?
Si, podes usar archivos o el registro de Windows.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 21:29
Que es eso del registro de windows???
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 21:35
http://es.wikipedia.org/wiki/Registro_del_sistema (http://es.wikipedia.org/wiki/Registro_del_sistema)
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 21:42
Pero como puedo escribir y leer de esos registros?
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 22:14
Usando la API de Windows, si vas a usar el registro guarda un solo valor el del directorio de instalacion (despues le agregaras los nombres de los archivos a variables en tiempo de ejecucion).

Registry (http://msdn2.microsoft.com/en-us/library/ms724871.aspx)
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 22:32
Muchas Gracias aunque supongo que buscare otra solucion porque solo tengo hasta el domingo para acabarlo y no creo que consiga hacerlo y enterlo para entonces.

Es demasiado lioso para acerlo en tan poco tiempo
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 22:50
Cita de: "kertxo"
Muchas Gracias aunque supongo que buscare otra solucion porque solo tengo hasta el domingo para acabarlo y no creo que consiga hacerlo y enterlo para entonces.

Es demasiado lioso para acerlo en tan poco tiempo
En realidad hacerlo es bastante simple pero aprender los conceptos lleva un tiempo, mejor usa un archivo (formato .INI, uno propio o el que quieras).
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 23:02
Ya esta he creado un archivo .dat de rutas en una carpeta temporal fija k sera siempre la misma y  me lo lee ala perfeccion ahora empezare a depurar lo que me dijiste del MAX_PATH aber que es lo que puedo hacer.
GRACIAS
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 23:04
De nadas pero si ahora te funciona usando MAX_PATH y el memset no hace falta que depures nada.
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Jueves 14 de Junio de 2007, 23:14
Bueno, el programa esta acabado, pero ya se me ha ocurrido algo mas para hacer, voi a ponerle una barra de progreso para saber cuando ha acabado de copiar los archivos.
Siempre hay algo mas que se pueda hacer jejeje
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Jueves 14 de Junio de 2007, 23:27
Cita de: "kertxo"
Bueno, el programa esta acabado, pero ya se me ha ocurrido algo mas para hacer, voi a ponerle una barra de progreso para saber cuando ha acabado de copiar los archivos.
Siempre hay algo mas que se pueda hacer jejeje
Je, si queres hacerlo bien (complicado) busca informacion sobre CopyFileEx  :P
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Domingo 17 de Junio de 2007, 15:06
Antes de hacerlo bonito tiene que ser funcional y me acabo de dar cuenta que no funciona bien

Copia los ficheros donde se le indica y los lee pero no guarda en ellos porque los crea como ficheros de solo lectura. ¿Como puedo hacer que los cree de forma que pueda escribir en ello?
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Domingo 17 de Junio de 2007, 15:43
Cita de: "kertxo"
Antes de hacerlo bonito tiene que ser funcional y me acabo de dar cuenta que no funciona bien

Copia los ficheros donde se le indica y los lee pero no guarda en ellos porque los crea como ficheros de solo lectura. ¿Como puedo hacer que los cree de forma que pueda escribir en ello?
Los copia tal cual, con sus atributos y me imagino que lo estas haciendo desde un CD donde son siempre read-only, la solucion es justo despues de copiar un archivo usar G/SetFileAttributes sobre la nueva copia para obtener los atributos y sacar el FILE_ATTRIBUTE_READONLY.

http://msdn2.microsoft.com/en-us/library/aa364944.aspx (http://msdn2.microsoft.com/en-us/library/aa364944.aspx)

Fijate especialmente en el ejemplo Retrieving and Changing File Attributes (http://msdn2.microsoft.com/en-us/library/aa365522.aspx), tenes que hacer lo contrario (en cuanto a G/Set...)  ;)
Título: Re: Ayuda System(copy ) C++
Publicado por: kertxo en Domingo 17 de Junio de 2007, 16:56
No funciona le pongo a NORMALk es el 128 y lo deja = seguire probando porque tiene que funcionar por narices.
Título: Re: Ayuda System(copy ) C++
Publicado por: Eternal Idol en Domingo 17 de Junio de 2007, 17:01
Cita de: "kertxo"
No funciona le pongo a NORMALk es el 128 y lo deja = seguire probando porque tiene que funcionar por narices.
Si funciona  :P Fijate bien que estes usando el path del NUEVO archivo, despues fijate que devuelve la funcion, siempre hay valores de retorno que nos orientan.