Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Twic
18 / 18 / 12
Регистрация: 03.12.2009
Сообщений: 151
1

Потоки в Delphi

08.12.2009, 03:05. Просмотров 1348. Ответов 2
Метки нет (Все метки)

Вот у меня возник такой вопрос ?
у меня есть задание нужно создать пример синхронизации потоков!
у меня есть неплохой пример ну почему то он не хочет компилироваться, выбивает ошибку.!!!!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
unit Unit5;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Buttons, XPMan, StdCtrls, jpeg, ExtCtrls;
 
type
  TFormSPotok = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;
    Image1: TImage;
    cbSect: TCheckBox;
    XPManifest1: TXPManifest;
    InfoB: TBitBtn;
    DopB: TBitBtn;
    ExitB: TBitBtn;
   procedure cbSectClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  FormSPotok: TFormSPotok;
 
type
  TMyThread = Class(TThread);
  private
     {Private declarations}
    Mem : TMemo;
    {В перемунную mem при вызове конструктора потока будет
     передаваться конкретный экземпляр TMemo}
  protected
    constructor Create (M: TMemo); //Переопредитение
    procedure Execute; override;
    procedure OutMessage;
  end;
 
implementation
 
{$R *.dfm}
 
var CritSect: Boolean; //флаг "Виклучать-не выключать"
    Sect1: TRTLCriticalSection; //Критическая секция
    GlobalData: Integer; //Глобальная переменная
 
constructor TMyThread.Create(m: TMemo);
begin                      //Преопредиляем конструктор
  Inherited Create(False); //Вызываем унаследованый
  Mem := m;                //Передаем куда записивать числа
end;
 
procedure TMyThread.OutMessage;
begin //Добавление строки в редактор
  Mem.lines.add(IntToStr(GlobalData));
end;
 
procedure TMyThread.Execute;
var j:Integer;
begin
  for j:=1 to 50 do
   begin
     //Если механизм крит. секции используется
     if (CritSect) then EnterCriticalSection(Sect1);
     //Вход в критическую секцию
     //Изменение глобальной переменной
     GlobalData:= GlobalData+3;
     Sleep(3); //Задержание на 3 мс для увеличения
               //вероятности рассинхронизации
     GlobalData :=GlobalData-3;
     Synchronize(OutMessage);
     //Выход из крит. секции
     if (CritSect) then LeaveCriticalSection(Sect1);
   end;
end;
 
var Thread1, Thread2: TMyThread; //Экземпляры потоков
 
procedure TFormSPotok.Button1Click(Sender: TObject);
begin
  GlobalData:= 100;
  Memo1.Lines.Clear;
  Memo2.Lines.Clear;
  Thread1:= TMyThread.Create(Memo1); //Старт потока 1
  Thread2:= TMyThread.Create(Memo2); //Старт потока 2
end;
 
procedure TFormSPotok.FormCreate(Sender: TObject);
begin
  InstalizeCriticalSection(Sect1);
  critSect:= false;
end;
 
procedure TFormSPotok.FormDestroy(Sender: TObject);
begin
  DeleteCriticalSection(Sect1);
end;
 
procedure TFormSPotok.cbSectClick(Sender: TObject);
begin
  CritSect:= cbSect.Checked;
end;
 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2009, 03:05
Ответы с готовыми решениями:

Потоки в Delphi
Доброе время суток, форумяне:))! Суть вопроса в следующем. Есть функция...

Delphi потоки процесса
зная процесс нужно вывести его потоки, кто знает как это реализовать? с...

Какие отличия Delphi 5, Delphi 6 и Delphi 7
Кто-нибудь юзал Delphi 6? Если да, то напишите, плиз, его отличия от 5-ой...

потоки?
юзаю TForm1.FormKeyDown, TForm1.FormKeyPress, TForm1.FormKeyUp хочу добится...

Потоки и события
Добрый день. Пишу класс для работы со считывателем бесконтактных карт....

2
Twic
18 / 18 / 12
Регистрация: 03.12.2009
Сообщений: 151
09.12.2009, 00:41  [ТС] 2
Почему здесь ошибка я не могу понять подскажите Плизззз.....!!????????????
Цитата Сообщение от Twic Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   //
type
  TMyThread = Class(TThread);
  private
     {Private declarations}
    Mem : TMemo;
    {В перемунную mem при вызове конструктора потока будет
     передаваться конкретный экземпляр TMemo}
  protected
    constructor Create (M: TMemo); //Переопредитение
    procedure Execute; override;
    procedure OutMessage;
  end;
 
//
0
Humanoid
Почетный модератор
9969 / 3857 / 344
Регистрация: 12.06.2008
Сообщений: 11,384
09.12.2009, 08:12 3
После
TMyThread = Class(TThread)
убери точку с запятой.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2009, 08:12

Потоки в делфи
Доброго дня уважаемые! Вот день пробился с потоками (MyThread =...

Объекты и потоки
Доброго времени суток! Функция в длл создает форму, объявленной в той же длл....

Таймеры и потоки.
Верно ли, что события OnTimer абсолютно всех таймеров принадлежит VCL потоку?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru