![]() |
|
|
Регистрация | << Правила форума >> | 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; |