Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

GetWindowsDirectory()

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: GetWindowsDirectory() Responder citando

A ver si alguien puede ayudarme con esto:
Deseo que cuando se inicie mi aplicación me cree un archivo dentro de la carpeta de windows y que a su vez, inserte un texto determinado en ese archivo, el código que intento utilizar es el siguiente:

void __fastcall TfrmPrincipal::FormCreate(TObject *Sender)
{
FILE *stream;
AnsiString Texto = "mi texto";
AnsiString a;
a.SetLength(MAX_PATH);
GetWindowsDirectory( a.c_str(),MAX_PATH );
AnsiString Fichero=a+"MIFICHERO.TXT";
stream=fopen(Fichero.c_str(),"wt");
fputs(Texto.c_str(),stream);
fclose(stream);
}
//---------------------------------------------------------------
/*Al compilarlo me da un error que creo que es de memoria, no lo se, no estoy muy seguro.
Muchas gracias a quien me heche un cable Wink */
Volver arriba
Mensaje    Asunto: Responder citando

El fallo esta en usar 'SetLength', no es recomendable usarlo para este tipo de cosas, aun así si lo utilizas después de la función que escriba en la AnsiString tendrás que volver a usar 'SetLenght' para poner el tamaño real que ocupan los caracteres.
Código:
    FILE *stream;
    AnsiString Texto = "mi texto";
    AnsiString a;
    a.SetLength(MAX_PATH);
    GetWindowsDirectory( a.c_str(),MAX_PATH );

    // Añadimos la linea siguiente para indicar el tamaño real
    a.SetLength( strlen(a.c_str()) );

    // Y aquí corregimos la linea añadiendo \\ al comienzo
    AnsiString Fichero = a + "\\MIFICHERO.TXT";

    stream=fopen(Fichero.c_str(),"wt");
    fputs(Texto.c_str(),stream);
    fclose(stream);

Una manera más típica, sin usar SetLength:
Código:
    char a[MAX_PATH];
    GetWindowsDirectory(a, MAX_PATH);
    AnsiString Fichero = Format("%s\\MIFICHERO.TXT", ARRAYOFCONST((a)) );

    FILE* stream = fopen(Fichero.c_str(), "wt");
    AnsiString Texto = "mi texto";
    fputs(Texto.c_str(), stream);
    fclose(stream);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hey _Leo Wink, Sobresaliente, tu ayuda me ha solucionado el problema.
Son tantas las ayudas que das en este foro que a veces siento que dándote las gracias no es suficiente, por tanto si hay algo que pueda hacer por ti dímelo y no dudes en que pondré todo mi empeño.
Saludos.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.