<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
En el codigo: ReadLn(f, s); // aca da el error<b><br>
<br>
dentro del ide da el error:<br>
Project psfsvr raised exception class RunError(103)<br>
<br>
fuera del ide:<br>
"File not open"<br>
<br>
uso lazarus 0.9.28 con fpc 2.2.4 revision 21921<br>
<br>
el tema es que cada vez que se usa la función las variables son nuevas
y los archivos existen...<br>
<br>
debe ser un bug...<br>
<br>
este es el codigo que da error:<br>
</b><br>
procedure Tmain.a_scandatosExecute(Sender: TObject);<br>
var<br>
k, copias: integer;<br>
f: TextFile;<br>
job, equipo, recurso,<br>
archivo_formulario, archivo_datos,<br>
tarea, impresora, formulario, sql, ts, mensaje: string;<br>
yy, mm, dd, hh, mi, ss, ms : word;<br>
p: TProcess;<br>
<br>
<br>
Function get_firstline(fname: string): string;<br>
var<br>
f: TextFile;<br>
s: String;<br>
begin<br>
if FileExists(fname) then<br>
begin<br>
AssignFile(f, fname);<br>
Reset(f);<br>
<br>
ReadLn(f, s); // aca da el error<br>
<br>
result:=s;<br>
CloseFile(f);<br>
end;<br>
end;<br>
<br>
<br>
begin<br>
t_scan.Enabled:=false;<br>
mem_servidor.Append('Buscando nuevas tareas de impresión...
('+inttostr(t_scan.Interval div 1000)+' segs)');<br>
sl_cola:=FindFile(sl_props.values['rutadatos']+'\*.'+sl_props.values['extdatos']);<br>
mem_servidor.Append(sl_cola[0]);<br>
for k:=0 to sl_cola.Count-1 do<br>
begin<br>
if FileExists(sl_cola[k]) then<br>
begin<br>
<br>
job:=get_firstline(sl_cola[k]);<br>
<br>
archivo_datos:=ExtractFileName(sl_cola[k]);<br>
if copy(job, 1, 4) = '^job' then<br>
begin<br>
tarea:=copy(job, 6, 6);<br>
impresora:=copy(job, 12, 2);<br>
<br>
<br>
<br>
<br>
<br>
<b>sin embargo este codigo no da error:</b><br>
<br>
program Project1;<br>
<br>
{$mode objfpc}{$H+}<br>
<br>
uses<br>
{$IFDEF UNIX}{$IFDEF UseCThreads}<br>
cthreads,<br>
{$ENDIF}{$ENDIF}<br>
Classes, sysutils<br>
{ you can add units after this };<br>
<br>
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}<br>
<br>
Function get_firstline(fname: string): string;<br>
var<br>
f: TextFile;<br>
s: String;<br>
begin<br>
if FileExists(fname) then<br>
begin<br>
AssignFile(f, fname);<br>
Reset(f);<br>
ReadLn(f, s);<br>
CloseFile(f);<br>
result:=s;<br>
end;<br>
end;<br>
var<br>
f1, f2, f3: string;<br>
<br>
begin<br>
f1:='G:\sis\pascal\lazarus\PServer\RTO01123.DAT';<br>
writeln(get_firstline(f1));<br>
<br>
f2:='G:\sis\pascal\lazarus\PServer\RTO01188.DAT';<br>
writeln(get_firstline(f2));<br>
<br>
f3:='G:\sis\pascal\lazarus\PServer\RTO01199.DAT';<br>
writeln(get_firstline(f3));<br>
<br>
readln;<br>
<br>
end.<br>
<br>
<br>
</body>
</html>