Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.84
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
#1

Дополнительный поток: как реализовать - Delphi

05.04.2012, 19:17. Просмотров 6464. Ответов 131
Метки нет (Все метки)

Добрый день! Помогите пожалуйста добавить поток в программу, просто не могу сам разобраться в потоках.
И ещё не большая просьба - дайте какой ни будь очень простой пример потоков. Вся литература, посвящённая этой теме, уж больно не понятная
Заранее спасибо!
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
unit deleter;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button2: TButton;
    N5: TMenuItem;
    N6: TMenuItem;
    Button3: TButton;
    CheckBox1: TCheckBox;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
f, j:integer;
begin
for i:=0 to memo1.Lines.Count -1 do
begin
repeat
if ansipos(memo2.Text,memo1.Lines[i])<>0 then
memo1.Lines.Delete(i);
until
ansipos(memo2.Text,memo1.Lines[i])=0;
if checkbox1.Checked then
begin
For f:=Memo1.Lines.Count-1 downto 0 do
For j:=f-1 downto 0 do
If Memo1.Lines[f]=Memo1.Lines[j] then
Memo1.Lines.Delete(f);
end;
end;
end;
 
procedure TForm1.N6Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to memo1.Lines.Count -1 do
begin
repeat
if ansipos(memo2.Text,memo1.Lines[i])<>0 then
memo1.Lines.Delete(i);
until
ansipos(memo2.Text,memo1.Lines[i])=0;
if ansipos(memo2.Text,memo1.Lines[i])=0 then
showmessage('Готово!');
end;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
if opendialog1.execute=true then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
i, j:integer;
begin
For i:=Memo1.Lines.Count-1 downto 0 do
For j:=i-1 downto 0 do
If Memo1.Lines[i]=Memo1.Lines[j] then
Memo1.Lines.Delete(i);
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if savedialog1.execute=true then
memo1.Lines.SaveToFile(savedialog1.Filename);
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
if savedialog1.execute=true then
memo1.Lines.SaveToFile(savedialog1.Filename);
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
if opendialog1.execute=true then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
form1.Close;
end;
 
procedure TForm1.N4Click(Sender: TObject);
begin
MessageDlg('Прогу заебенил Kloud :D', mtinformation, [mbOk], 0);
 
end;
 
end.
Добавлено через 1 час 39 минут
Помогите кто нибудь
Уж очень хочется с потоками разобраться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 19:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дополнительный поток: как реализовать (Delphi):

Дополнительный поток и внешние функции\процедуры - Delphi
Приветствую Вас, победители восставших компиляторов. Возник небольшой вопрос, в проге есть вспомогательные модули, ну и соответственно...

Поток освобождается, но переменная, которой был присвоен этот поток, не очищается - Delphi
Мне интересно, вот поток отработал, стоит FreeOnTerminate:=True; Поток освобождается, но переменной которой было присвоен этот поток, не...

Как уничтожить поток? - Delphi
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Threads.MyThreads.Free;//Не канает. пишит _...

Как приостановить поток? - Delphi
var I: Integer; begin Thread := sSpinEdit2.Value; for I := 0 to Thread do begin MyThr.Suspend; end;

Как остановить поток - Delphi
Здравствуйте, у меня в потоке выполняется код, а именно запрос idhttp1.get после запроса и обработки данных я в этом же потоке делаю...

Как запустить поток из таймера? - Delphi
не получается запустить потоки из таймера, при создании потока из кнопки все работает procedure TForm1.Button2Click(Sender: TObject); ...

131
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
15.04.2012, 12:44  [ТС] #106
Цитата Сообщение от Psilon Посмотреть сообщение
Так и надо
Вот скрин: числа были 4 и 7
0
Миниатюры
Дополнительный поток: как реализовать  
Psilon
Master of Orion
Эксперт .NET
5916 / 4815 / 634
Регистрация: 10.07.2011
Сообщений: 14,434
Записей в блоге: 5
Завершенные тесты: 4
15.04.2012, 14:47 #107
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  for i:= StrToInt(edit1.Text) to StrToInt(edit2.Text) do
    memo1.Lines.Add(inttostr(a));
end;
1
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
15.04.2012, 18:24  [ТС] #108
Спасибо! А как сростить два текстовика?
Допустим в мемо1 лежит текстовик со словами "Привет!" а в мемо2 лежит другой со словами "как ты?" "как дела?" "как жизнь?"(допустим). Вот как их соединить, что бы разделителем между словами был пробел или "_"?
Я подумал, что примерно так:
Delphi
1
memo3.lines.add(memo1.lines+' '+memo2.lines);
Это правильно будет?
0
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 497
15.04.2012, 18:43 #109
если пишешь lines то нужно указато номер строки lines[номер_строки]
мб так если по одной строке в мемо...
Delphi
1
memo1.text+' '+memo2.text
Добавлено через 1 минуту
не не так)

Добавлено через 1 минуту
если знаешь какие тебе строки склеить надо то:
Delphi
1
memo3.lines.add(memo1.lines[0]+' '+memo2.lines[0]) //0(ноль) номер строки в мемо
0
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
15.04.2012, 19:08  [ТС] #110
Цитата Сообщение от paxan86 Посмотреть сообщение
если пишешь lines то нужно указато номер строки lines[номер_строки]
мб так если по одной строке в мемо...
Delphi
1
memo1.text+' '+memo2.text
Добавлено через 1 минуту
не не так)

Добавлено через 1 минуту
если знаешь какие тебе строки склеить надо то:
Delphi
1
memo3.lines.add(memo1.lines[0]+' '+memo2.lines[0]) //0(ноль) номер строки в мемо
А если с 1-ой до последней?
0
Psilon
Master of Orion
Эксперт .NET
5916 / 4815 / 634
Регистрация: 10.07.2011
Сообщений: 14,434
Записей в блоге: 5
Завершенные тесты: 4
15.04.2012, 19:11 #111
Melko,
Delphi
1
2
for i:= 0 to Memo1.Lines.Count-1 do
  memo3.lines.add(memo1.lines[0]+' '+memo2.lines[0])
1
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
15.04.2012, 19:12  [ТС] #112
А что вообще -1 означает?
Я вот часто замечаю, а что это - не знаю
0
Psilon
Master of Orion
Эксперт .NET
5916 / 4815 / 634
Регистрация: 10.07.2011
Сообщений: 14,434
Записей в блоге: 5
Завершенные тесты: 4
15.04.2012, 19:14 #113
Melko, есть у нас 10 чисел, если мы нумеруем их от 0, какое число будет старшим?
1
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 497
15.04.2012, 19:18 #114
строки в мемо начинаются с нуля(0) а Memo1.Lines.Count это количество строк, если не писать -1 то в I будет номер строки которой нет..

Добавлено через 3 минуты
Цитата Сообщение от Psilon Посмотреть сообщение
for i:= 0 to Memo1.Lines.Count-1 do
memo3.lines.add(memo1.lines[0]+' '+memo2.lines[0])
только тут наверно так..)
Delphi
1
2
for i:= 0 to Memo1.Lines.Count-1 do
 memo3.lines.add(memo1.lines[i]+' '+memo2.lines[i])
1
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
15.04.2012, 19:28  [ТС] #115
Цитата Сообщение от Psilon Посмотреть сообщение
Melko,
Delphi
1
2
for i:= 0 to Memo1.Lines.Count-1 do
  memo3.lines.add(memo1.lines[0]+' '+memo2.lines[0])
Что то он не прибавляет текст из memo2, а складывает текст из мемо1 и пробел

Добавлено через 3 минуты
Цитата Сообщение от paxan86 Посмотреть сообщение

только тут наверно так..)
Delphi
1
2
for i:= 0 to Memo1.Lines.Count-1 do
 memo3.lines.add(memo1.lines[i]+' '+memo2.lines[i])
Всё равно не работает
0
Psilon
Master of Orion
Эксперт .NET
5916 / 4815 / 634
Регистрация: 10.07.2011
Сообщений: 14,434
Записей в блоге: 5
Завершенные тесты: 4
15.04.2012, 19:38 #116
Melko, должно работать
Delphi
1
2
3
4
5
6
var
  i:integer;
begin
for i:= 0 to Memo1.Lines.Count-1 do
  memo3.lines.add(memo1.lines[i]+' '+memo2.lines[i])
end;
1
Миниатюры
Дополнительный поток: как реализовать  
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
15.04.2012, 20:07  [ТС] #117
Delphi
1
2
memo3.lines.add(memo1.lines[i]+' '+memo2.lines[i])
  memo2.Lines.Add(opendialog1.FileName);
Пытаюсь загрузить что либо в мемо2, а он выдаёт в мемо путь к файлу

Добавлено через 29 секунд
Кстати да - работает, это я немного ступил
0
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 497
15.04.2012, 20:37 #118
Цитата Сообщение от Melko Посмотреть сообщение
Пытаюсь загрузить что либо в мемо2, а он выдаёт в мемо путь к файлу
выдаёт путь и название файла а что нужно?
0
Melko
4 / 4 / 1
Регистрация: 07.01.2012
Сообщений: 243
16.04.2012, 17:27  [ТС] #119
Цитата Сообщение от paxan86 Посмотреть сообщение
выдаёт путь и название файла а что нужно?
Да не Я уже разобрался с этим
Всё равно у меня не получается соединить текст из мемо1 и мемо2
Соединяются текст из мемо1 и пробел, но при этом текст в мемо2 загружается

Добавлено через 20 часов 27 минут
Так что? Никто не знает?
0
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 497
16.04.2012, 21:10 #120
а этот код не робит?
Delphi
1
2
for i:= 0 to Memo1.Lines.Count-1 do
  memo3.lines.add(memo1.lines[i]+' '+memo2.lines[i])
и скрин выложи если не как надо работает...
0
16.04.2012, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 21:10
Привет! Вот еще темы с ответами:

Как в поток загрузить картинку из Интернета? - Delphi
Как в поток (TStream) загрузить картинку из Интернета?

Поток - Thread, как с ним работать - Delphi
Здравствуйте, Нужно создать (отдельный модуль) поток(с отображением Progressbar'ом) с одной функцией проверкой на существование файлов в...

Как определить закончил ли работу поток? - Delphi
Здравствуйте, как определить закончил ли работу поток? begin Potok1 := ParallelObj.Create(true); Potok2 :=...

Как лучше добавить процедуру в поток? - Delphi
Есть процедура, которая воспроизводит файл. В зависимости от checkbox'a на Form4, если он чекнут, то оно кеширует на диск, если он чекнут и...


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

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

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