 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Tugui Invitado
|
Publicado: Mie 19 Mar, 2003 12:16 am Asunto: GetWindowsDirectory() |
|
|
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 */ |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 19 Mar, 2003 12:50 am Asunto: |
|
|
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 |
|
 |
_Tugui Invitado
|
Publicado: Mie 19 Mar, 2003 7:57 pm Asunto: |
|
|
Hey _Leo , 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|