Ver la Versión Completa : Salto de linea en ficheros
carlosegs11
16-05-2007, 00:26:15
Hola amigos foristas.
Quiero guardar información en un archivo de texto pero dejando el salto de linea. Utilizó el siguiente código:
var
iArchivo, i : integer;
sArchivo : string;
begin
iArchivo := FileCreate('Prueba.txt');
FileWrite(iArchivo, 'Hola mundo\n', 12);
FileWrite(iArchivo, 'Hola Carlos\n', 12);
FileClose(iArchivo);
end;
Cuando abro el archivo Prueba.txt me aparece una sola linea:
Hola Mundo\nHola Carlos\n
Mi intención es que aparezca asi:
Hola Mundo\n
Hola Carlos\n
Que me puede estar faltando en el código?
Gracias de antemano.
Carlos E. :eek:
carlosegs11
16-05-2007, 00:36:10
Perdon para que se vea un poco mejor....
Hola amigos foristas.
Quiero guardar información en un archivo de texto pero dejando el salto de linea. Utilizó el siguiente código:
Código Delphi [-] (http://ardaiz.com/foros/#)
var
iArchivo, i : integer;
sArchivo : string;
begin
iArchivo := FileCreate('Prueba.txt');
FileWrite(iArchivo, 'Hola mundo\n', 12);
FileWrite(iArchivo, 'Hola Carlos\n', 12);
FileClose(iArchivo);
end;
Cuando abro el archivo Prueba.txt me aparece una sola linea:
Hola Mundo\nHola Carlos\n
Mi intención es que aparezca asi:
Hola Mundo\n
Hola Carlos\n
Que me puede estar faltando en el código?
Gracias de antemano.
Carlos E. :eek:
Wellnic
16-05-2007, 20:31:14
Me parece que esas no son las funciones más adecuadas para procesar ficheros de texto (aparte de que en Delphi se usa Chr(13) (o #13) en lugar de \n).
FileWrite y FileRead procesan bytes de memoria (buffers) y no cadenas de texto.
Así, ese código podría quedar, poco más o menos:
procedure TForm1.Button1Click(Sender: TObject);
var
iArchivo, i, x : integer;
pmem: PChar; //puntero a memoria
n1, n2, n: String;
begin
n1:= 'Hola Mundo'+#13;
n2:= 'Hola Carlos'+#13;
n:= n1+n2;
pmem:= PChar(AllocMem(SizeOf(n))); //ahora pmem es como un array de bytes
StrMove(m, PChar(n), Length(n)); //en el que se copian los de n
iArchivo := FileCreate('Prueba.txt');
FileWrite(iArchivo, pmem[0], Length(n)); //se graba pmem desde la posición 0
FileClose(iArchivo);
FreeMem(pmem); // se libera pmem
end;
//(http://npascal.sourceforge.net/pdevelop/runtime/Unit_SysUtils.html)
Un poco rebuscado, ¿no? :D
Por eso, para ficheros de texto se usan estas otras funciones:
procedure TForm1.Button2Click(Sender: TObject);
var fch: TextFile;
begin
AssignFile(fch, 'k:\Prueba.txt');
Rewrite(fch);
WriteLn(fch, 'Hola Mundo');
WriteLn(fch, 'Hola Carlos');
CloseFile(fch);
end;
carlosegs11
17-05-2007, 16:17:17
Wellnic, excelente tu respuesta. Me sirvio a las mil maravillas. Muchas gracias ;)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.