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

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

Войти
Регистрация
Восстановить пароль
 
 
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
#1

Нужно чтобы в потоке не было обращения к визуальным компонентам - Delphi

18.08.2014, 21:43. Просмотров 882. Ответов 21
Метки нет (Все метки)

Ребят выполнить вот это действие в потоке

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
    s:string;
begin
for i:=0 to Memo1.Lines.Count-1 do
 begin
  s:=Memo1.Lines[i];
  delete(s,pos('@',s),pos(':',s)-pos('@',s));
  Memo1.Lines[i]:=s
 end;
end;
end;
!!! Ребят исправте ошибки! Мне нужно чтобы в потоке не было обращения к визуальным компонентам(Чтобы увеличить скорость) Тоисть нужно загрузить это наверно в какуюто переменную) В общем ребят пожалуйста! Заранее спасибо!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 21:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Нужно чтобы в потоке не было обращения к визуальным компонентам (Delphi):

Задача о 8 ферзях. Нужно, чтобы было 2 поля для построения фигур - Delphi
Друзья программисты,есть у кого ни будь задача о 8 ферзях на делфи?Но задача не простая,надо что бы было 2 поля для построения фигур. ...

Как сделать чтобы по нажатию кнопки запускался exe файл, но путь прописывать к нему не нужно было бы. - Delphi
Как сделать чтобы по нажатию кнопки запускался exe файл, но путь прописывать к нему не нужно было бы. Т.е он как бы находился по имени exe...

Как сделать, чтобы процедура имела доступ к компонентам? - Delphi
Создал процедуру после {$R *.dfm}Всё работает, но когда пишу в ней код edit1.text:='привет'; то выдается ошибка: Undeclared identifier:...

Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке) - C++
хм.. не могу создать поток в c++ и направить туда. Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке.

Что нужно изменить, чтобы процедура запускалась с параметрами в новом потоке? - PascalABC.NET
Ошибка на 10 строке: Ожидалась функция, встречена процедура ADD Что нужно изменить, что бы процедура запускалась с параметрами в новом...

Кривая Безье: нужно, чтобы было не 4 точки а 7 - C#
нужно переделать чтобы было не 4 точки а 7, не могу не как переделать, помогите пожалуйста using System; using System.Drawing; ...

21
Сиськохват
Заблокирован
18.08.2014, 21:47 #2
Вместо memo, stringlist используй он такой же ток не визуальный
0
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
18.08.2014, 21:51  [ТС] #3
Можешь в коде показать?
Просто пока ещё 0 я а тут такое задание дали) Плиз покажи как
0
Сиськохват
Заблокирован
18.08.2014, 21:57 #4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
    s:string;
  sl: TStringList;
begin
sl := TStringList.Create;
sl.LoadFromFile('file');
for i:=0 to sl.Lines.Count-1 do
 begin
  s:=sl.Lines[i];
  delete(s,pos('@',s),pos(':',s)-pos('@',s));
  sl.Lines[i]:=s;
  Application.ProcessMessage;
 end;
memo1.text := sl.text;
sl.free;
 
end;
end;
ну чот типо того
0
cotseec
18.08.2014, 22:01
  #5

Не по теме:

Цитата Сообщение от Tech66 Посмотреть сообщение
а тут такое задание дали)
интереса для: а где именно такие задания дают?
Удалить домайны в Memo приведенный код ведь из вашей темы.....

0
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
18.08.2014, 22:02  [ТС] #6
for i:=0 to sl.Lines.Count-1 do
как в sl загржаються строки) я хз но у меня еоорр

Добавлено через 1 минуту
Работа с базой майлов нужно лично мне .
0
Сиськохват
Заблокирован
18.08.2014, 22:04 #7
Цитата Сообщение от Tech66 Посмотреть сообщение
как в sl загржаються строки) я хз но у меня еоорр
Delphi
1
sl.LoadFromFile('путь к файлу со строками');
или ты их вручную в мемо вбиваешь?
0
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
18.08.2014, 22:17  [ТС] #8
А можно сделать чтоб и файла в формате txt брало?

Добавлено через 11 минут
Не получаеться( одни еоры
0
Сиськохват
Заблокирован
18.08.2014, 22:18 #9
Думаю можно, но пока не знаю как, если узнаешь, отпишись обязательно)))
1
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
18.08.2014, 22:22  [ТС] #10
Ок) Но то что кинул там чтото ерит с lines
0
Сиськохват
Заблокирован
18.08.2014, 22:25 #11
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var i:integer;
    s:string;
  sl: TStringList;
begin
sl := TStringList.Create;
sl.LoadFromFile('file');
for i:=0 to sl.Count-1 do
 begin
  s:=sl.Strings[i];
  delete(s,pos('@',s),pos(':',s)-pos('@',s));
  sl.Strings[i]:=s;
  Application.ProcessMessages;
 end;
memo1.text := sl.text;
sl.free;
 
end;
0
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
18.08.2014, 22:39  [ТС] #12
Count расчет же вроде)
Кароч нажимаю процесс не идёт лан может кто напишет ещё если что напишу те

Добавлено через 1 минуту
Вот кароч весь код
Посмотри может я че не так делаю

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
unit Unit12;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sGauge, Vcl.StdCtrls, sButton,
  sGroupBox, sMemo, sDialogs;
 
type
  TForm12 = class(TForm)
    sMemo1: TsMemo;
    sGroupBox1: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sGauge1: TsGauge;
    sButton3: TsButton;
    sOpenDialog1: TsOpenDialog;
    sSaveDialog1: TsSaveDialog;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
      TNewThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
 
var
  Form12: TForm12;
 
implementation
 
{$R *.dfm}
 
procedure TForm12.sButton1Click(Sender: TObject);
begin
if sopendialog1.Execute=true then
smemo1.Lines.LoadFromFile(sopendialog1.FileName);
 
end;
 
procedure TForm12.sButton2Click(Sender: TObject);
var
  NewThread: TNewThread;
begin
  NewThread:=TNewThread.Create(true);
  NewThread.FreeOnTerminate:=true;
  NewThread.Priority:=tpTimeCritical;
  NewThread.Resume;
end;
 
 
procedure tnewthread.Execute;
var i:integer;
    s:string;
  sl: TStringList;
begin
sl := TStringList.Create;
sl.LoadFromFile('file');
for i:=0 to sl.Count-1 do
 begin
  s:=sl.Strings[i];
  delete(s,pos('@',s),pos(':',s)-pos('@',s));
  sl.Strings[i]:=s;
  Application.ProcessMessages;
 end;
smemo1.text := sl.text;
sl.free;
end;
 
end.
0
Сиськохват
Заблокирован
18.08.2014, 23:01 #13
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
unit Unit12;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sGauge, Vcl.StdCtrls, sButton,
  sGroupBox, sMemo, sDialogs;
 
type
  TForm12 = class(TForm)
    sMemo1: TsMemo;
    sGroupBox1: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sGauge1: TsGauge;
    sButton3: TsButton;
    sOpenDialog1: TsOpenDialog;
    sSaveDialog1: TsSaveDialog;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  TNewThread = class(TThread)
    sl:TStringList;
    path:String;
    procedure Execute; override;
    procedure Synx;
  end;
 
var
  Form12: TForm12;
 
implementation
 
{$R *.dfm}
 
procedure TForm12.sButton2Click(Sender: TObject);
var
  NewThread: TNewThread;
begin
  if not sopendialog1.Execute then Exit
  NewThread:=TNewThread.Create(true);
  NewThread.path := sopendialog1.FileName;
  NewThread.Resume;
end;
 
procedure tnewthread.Execute;
var i:integer;
    s:string;
begin
sl := TStringList.Create;
sl.LoadFromFile(path);
for i:=0 to sl.Count-1 do
 begin
  s:=sl.Strings[i];
  delete(s,pos('@',s),pos(':',s)-pos('@',s));
  sl.Strings[i]:=s;
 end;
 Synchronize(Synx);
sl.free;
end;
 
procedure tnewthread.Synx;
begin
  Form12.smemo1.text := sl.text;
end;
 
end.
1
Tech66
2 / 2 / 1
Регистрация: 18.08.2014
Сообщений: 35
18.08.2014, 23:13  [ТС] #14
Cпасибище огромное) Всё работает на ура)
И последнее можно как нибудь сделать чтоб разделитель автоматически определялся а то у меня работает только с : а хотелось чтобы и с ;
0
Сиськохват
Заблокирован
18.08.2014, 23:29 #15
какие разделители?
0
18.08.2014, 23:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2014, 23:29
Привет! Вот еще темы с ответами:

Нужно чтобы между рисунками не было свободного пространства - JavaScript
Есть таблица: <table cellspacing=0 cellpadding=0> <tr> <td height='35' colspan='2'> <img1> </td> <td width='50' rowspan='2'...

.NET 4.x Выполнение обращения к базе в другом потоке - C#
Столкнулся с популярной проблемой, работаю с MySQL базой, некоторые запросы обрабатываются около 50-ти секунд, все это время форма висит,...

Как нужно объявить переменную, чтобы число было знаковым - Assembler
Написал часть часть кода, которое считает выражение, проблема в том, что если x = -1 (как в коде) неправильный результат так как x = 65535....

Нужно оптимизировать готовый код, чтобы не было стыдно показать - C++
Мне дали сделать задачку, чтобы проверить мои знания в ООП (я только 2 месяца назад начал изучать С++). И так, задача: Я написал...


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

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

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