Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Ошибка при чтении потока   Найти похожие ветки 

 
Nvart   (2004-04-26 22:28) [0]

Доброго времени суток. Возникла следующая проблема. После добавления потока в программу при его вызове возникает ошибка:
Project1.project.exe raised exception class EAccessViolation with message:"AccessViolation" at address 004196F0 in module Project1.exe.
Read of address 000000004. Если кто знает, чем она может быть вызвана, подскажите пожалуйста.

поток:
unit Replace;

interface

uses
 Classes;

type
 TReplaceThr = class(TThread)
 public
   { Private declarations }

   procedure Execute; override;
 end;

implementation

uses Unit4;

{ Important: Methods and properties of objects in visual components can only be
 used in a method called using Synchronize, for example,

     Synchronize(UpdateCaption);

 and UpdateCaption could look like,

   procedure TReplaceThr.UpdateCaption;
   begin
     Form1.Caption := "Updated in a thread";
   end; }

{ TReplaceThr }

procedure TReplaceThr.Execute;
 var i,j,k,x:integer;
begin

x := 3;
//////////////////////////////Начало проходов по тексту
begin
for i := 0 to form4.RichEdit1.Lines.Count-1 do

  begin

      if form4.RichEdit1.Lines.Strings[i] <> "" then
      str := form4.RichEdit1.Lines.Strings[i];

      for j:=1 to (Length(str)) do
          //////////////////////// Замена
          begin
              if (str[j]<>".") and (str[j]<>" ") and (j mod x = 0)  then
                 begin
                     str[j]:=".";

                     if i>0 then
                        for k:=(Length(str)) to 256 do
                          str:=str+" ";
                 end
               else
                    if (str[j]=".") and  (j mod x = 0) then
                    str[j+1]:="."
end;
if terminated then exit;
end;
end;
end;
end.

Вызов:
procedure TForm4.BitBtn1Click(Sender: TObject);
begin
thr:=TReplaceThr(false);
thr.Resume;
thr.Priority:=tpLower;

end;


 
Polevi ©   (2004-04-27 09:55) [1]

{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize


 
Romkin ©   (2004-04-27 12:50) [2]

:))) Не, ну главное, вкинул с этим комментарием, но его игнорировал. Блеск!
Кстати, структурируй, плизз.
А еще лучше - просто посмотри demos/threads, там пример есть


 
Тимохов ©   (2004-04-27 12:53) [3]

Да, прикольно:)))
Веть ответ же в вопросе есть.
Зачем игнорируем комментарий?


 
Erik ©   (2004-04-27 13:13) [4]

Может незнаем англиского языка? Вобщем Synchronize нужен для обращения к форме. Или с помощю сообщений сам делай, но кажется тебе это не светит.


 
vl_chel ©   (2004-04-27 14:51) [5]

procedure TForm4.BitBtn1Click(Sender: TObject);
begin
thr:=TReplaceThr.Create(false); // Создавать нужно
thr.Resume;
thr.Priority:=tpLower;

end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
3-1082536432
din
2004-04-21 12:33
2004.05.16
Как вывести на форму текущий месяц


4-1080823908
Midaw
2004-04-01 16:51
2004.05.16
Перевод хэндла процесса в хэндл его окна


14-1082449384
Igorek
2004-04-20 12:23
2004.05.16
Предлагаю ввести значок "Ламер", который выдавать всем желающим.


14-1082726500
7@ua
2004-04-23 17:21
2004.05.16
работа с базой данных в Делфи


1-1082829945
kvazar
2004-04-24 22:05
2004.05.16
открытие файла