1. Удалить первые строки из обоих файлов.
2. Писать строку в конец одного файла из двух.
В Memo1 пишет 'Строки удалены', один раз. В Memo2 никаких изменений.
В самих файлах соответственно новых строк не появляется.
В чём ошибка?
Код:
procedure TMyThread1.Execute;
begin
CriticalSection.Enter;
while not Terminated do
Synchronize(Work1);
CriticalSection.Leave;
end;
Код:
procedure TMyThread1.Work1;
begin
f:=TStringList.Create();
p:=TStringList.Create();
f.LoadFromFile('myFile1.htm');
p.LoadFromFile('myFile2.htm');
if (f.Count>0) and (p.Count>0) then
begin
f.Delete(0);
p.Delete(0);
end;
f.SaveToFile('myFile1.htm');
p.SaveToFile('myFile2.htm');
f.Free;
p.Free;
Form1.Memo1.Text:='Строки удалены';
end;
Код:
procedure TMyThread2.Execute;
begin
CriticalSection.Enter;
while not Terminated do
Synchronize(Work2);
CriticalSection.Leave;
end;
Код:
procedure TMyThread2.Work2;
var
l:string;
o:byte;
begin
f:=TStringList.Create();
Randomize;
If Random(20) > 10 Then l:='myFile1.htm' Else l:='myFile2.htm';
f.LoadFromFile(l);
f.Append('Новая строка');
f.SaveToFile(l);
f.Free;
Form1.Memo2.Text:='Добавленная строка №'+inttostr(o);
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
CriticalSection:=TCriticalSection.Create;
MyThread1 := TMyThread1.Create(True);
MyThread1.FreeOnTerminate := True;
MyThread1.Priority := tpIdle;
MyThread1.Resume;
MyThread2 := TMyThread2.Create(True);
MyThread2.FreeOnTerminate := True;
MyThread2.Priority := tpIdle;
MyThread2.Resume;
end;