我试图通过写入我的网络上的共享文件来创建一个简单的聊天程序

Use*_*049 1 delphi timer

我试图使用计时器来检查文件的时间戳,以检查它是否已被修改,如果这是真的,它必须将文本文件中的行添加到richedit.问题是它每隔1/4秒(定时器间隔)不断地将行添加到richedit.我尝试了不同的方法,但无法做到正确.

procedure TForm1.Timer1Timer(Sender: TObject);
Var
Filet : textfile;
filename, readtxt : string;
filedate1, filedate2 : integer;
begin

assignfile(filet, 'S:\share.talk');
filename := 'S:\share.talk';
filedate1 := FileAge(filename);

if filedate1 <> filedate2 then begin
reset(filet);
readln(filet, readtxt);
richedit1.lines.add(readtxt);
closefile(filet);
filedate2 := filedate1;
end;//if
end;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Mar*_*ynA 5

在你的代码中

if filedate1 <> filedate2 then begin
reset(filet);
readln(filet, readtxt);
richedit1.lines.add(readtxt);
closefile(filet);
filedate2 := filedate1;
end;
Run Code Online (Sandbox Code Playgroud)

比较 filedatefiledate2假设它们在调用之间保持它们的值Timer1Timer.它们没有,因为它们被声明为本地,因此它们被Timer1Timer"忘记",因为它们存储在堆栈中.

要让它们保留它们的值,请删除它们本地的声明,并将它们Timer1Timer声明为TForm1的字段.

顺便说一下,请注意,使用此设计,您将遇到其他问题,例如如何处理对网络文本文件的并发访问等,但它们与您询问的具体问题无关.