PDA

Ver la Versión Completa : Problema con Rewrite


mr_mustard
21-02-2007, 20:31:07
Estoy trabajando con Delphi 7 y experimenté el sigte. caso:
PROBLEMA: no podía ejecutar el siguiente código:
AssignFile(F,'ip_servidor.txt');
Rewrite(F);
writeln(F, s);
closefile(F);

daba un error Project xxxx.exe raised exception class EInOutError with message 'I/O error 32'. Process stopped.

SOLUCION:
AssignFile(F,'ip_servidor.txt');

Rewrite(F);
writeln(F, s);
closefile(F);
No sé que tiene que ver la linea en blanco, pero solucionó el estupido problema que me ha quitado varios minutos de valioso desarrollo.

nlsgarcia
23-02-2007, 04:27:24
:) Hola:

Yo tuve un problema relacionado con archivos UDT y creo que la causa son fallas en el compilador, revisa el tema Una Pregunta Teórica sobre Archivos UDT en: http://www.clubdelphi.com/foros/showthread.php?t=40605 y me comentas si el error es de concepto o de compilador.


Gracias :)

Lepe
23-02-2007, 14:16:59
Las líneas en blanco las elimina el compilador antes de hacer el ejecutable, así que... no van por ahí los tiros.

Lo que veo en un principio, es que pasas la ruta relativa, por tanto, el archivo se creará en el directorio de windows o a saber donde.

No usas ninguna estructura try except para cerrar el archivo en caso de problemas y precisamente ese es el 'I/O ERROR 32' el archivo ya se encuentra abierto (habrás pulsado dos veces en el botón de abrir el archivo).

Por otra parte, no compruebas si el directorio donde se va a crear existe o no (el usuario puede borrar cualquier carpeta), haz un ForceDirectories si es necesario.

Saludos

Lepe
23-02-2007, 14:37:11
Un detalle para ambos:

Si el archivo o la ruta puede tener espacios en su nombre, o ser mayor a 8 caracteres, usad dobles comillas para encerrarlo todo, la ruta y nombre de archivo:

var ruta:string;
begin
ruta := '"c:\Archivos de programa\mi programa\ip_servidor.txt"';
// observen, primero una comilla simple, para iniciar un string y dentro las dobles
// comillas tipográficas. Al terminar la ruta, al contrario.

AssignFile(F,ruta);


Saludos