[Lazarus-es] Problema con archivos
Hetor S. Ponce
hectorsponce en gmail.com
Mie Oct 28 22:14:43 CET 2009
Hola soy nuevo a la lista y me he topado con un inonveniente:
1) cargo el TStringList sl_cola con el path de unos archivos
sl_cola:=FindFile(sl_props.values['rutadatos']+'\*.'+sl_props.values['extdatos']);
2) a cada archivo tengo que leer la 1ra linea:
for k:=0 to sl_cola.Count-1 do
begin
if FileExists(sl_cola[k]) then
begin
job:=get_firstline(sl_cola[k]);
archivo_datos:=ExtractFileName(sl_cola[k]);
if copy(job, 1, 4) = '^job' then
begin
tarea:=copy(job, 6, 6);
impresora:=copy(job, 12, 2);
3) la funcion get_firstline() es:
Function get_firstline(fname: string): string;
var
f: TextFile;
s: String;
begin
if FileExists(fname) then
begin
{$i-}
AssignFile(f, fname);
Reset(f);
{$I+}
if IoResult=0 then
begin
ReadLn(f, s);
result:=s;
CloseFile(f);
end
end;
end;
el problema es que me hace alternativamente un arhivo si y otro no....
al segundo archivo me dice error 103
la unica forma que consegui que funcione es hacer la funcion asi:
Function get_firstline(fname: string): string;
var
f: TextFile;
s: String;
fe: boolean;
begin
if FileExists(fname) then
begin
{$i-}
AssignFile(f, fname);
Reset(f);
{$I+}
if IoResult=0 then
begin
CloseFile(f);
AssignFile(f, fname);
Reset(f);
ReadLn(f, s);
result:=s;
CloseFile(f);
end
else
begin
AssignFile(f, fname);
Reset(f);
ReadLn(f, s);
result:=s;
CloseFile(f);
end;
end;
end;
es decir, hacerle dos veces el reset.... es como si el closefile no
funcionara bien...
alguna sugerencia?????
gracias
More information about the Lazarus-es
mailing list