Показать сообщение отдельно
  #1  
Старый 22.05.2011, 19:03
YurIbr89 YurIbr89 вне форума
Прохожий
 
Регистрация: 05.05.2011
Сообщения: 8
Репутация: 10
По умолчанию Запись и удаление строк

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;
Ответить с цитированием