[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