Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизОшибка при чтении потока Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.031 c