![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
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; |