Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с потоком как организовать? [D7, XP]


Страницы:   1 2

Xmen ©   (2012-11-21 15:15:00) 

Привет мастерам.
Есть форма в котором подготавливается файл для отправки в филиал (типа почтовый клиент). Выбирается файл или несколько файлы для отправки. после нажатия кнопки отправки файл архивируется и пери именуется по шаблону и помешается в папку для отправки. Каждый 5 минут проверяется папка приёма файлов если там есть файл то он перемешается в нужную папку. Теперь вопрос как можно сделать так чтобы приём файла была в отдельном потоке и пака принимается файл не зависала программа.


Xmen   (2012-11-27 15:45:00) [21]

Спасибо.
Как можно обращаться?


Amoeba_   (2012-11-27 15:42:00) [22]


> procedure myTr.Execute;
> var path:string;
> begin
>  path:= ExtractFilePath(Application.ExeName);
>   Form1.label2.Caption:='start';
>  copyfile(PChar(path+'1\1.avi'),PChar(path+'2\1.avi'),false);
>
>   Form1.label2.Caption:='2';
>  copyfile(PChar(path+'1\2.avi'),PChar(path+'2\2.avi'),false);
>
>   Form1.label2.Caption:='3';
>  copyfile(PChar(path+'1\3.avi'),PChar(path+'2\3.avi'),false);
>
>   Form1.label2.Caption:='end';
> end;

RTFM! То, что подчеркнутоесть обращение к VCL, а к ней обращаться напрямую из Execute потока нельзя!


Xmen   (2012-11-27 15:18:00) [23]

по примерам из статьи сделал простую прогу. 3 кнопки  1 и 2 для проверки формы а 3 для копирования в потоке. Файлы по 4 гига после каждого копирования должно менятся капшен в 2 лейбеле.

unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Label1: TLabel;
   Label2: TLabel;
   Button3: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses myTread;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 label1.Caption:='Button 1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 label1.Caption:='Button 2';
end;

procedure TForm1.Button3Click(Sender: TObject);
var myThd: myTr;
begin
 myThd := myTr.Create(True);
 myThd.FreeOnTerminate := True;
 try
   myThd.Resume;
 except on EConvertError do
   begin
     myThd.Free;
     ShowMessage('Ne poluchaetsya skachat!');
   end;
 end;
end;

end.

unit myTread;

interface

uses
 Forms, SysUtils, Windows, Classes;

type
 myTr = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
 end;

implementation

uses main;

procedure myTr.Execute;
var path:string;
begin
 path:= ExtractFilePath(Application.ExeName);
 Form1.label2.Caption:='start';
 copyfile(PChar(path+'1\1.avi'),PChar(path+'2\1.avi'),false);
 Form1.label2.Caption:='2';
 copyfile(PChar(path+'1\2.avi'),PChar(path+'2\2.avi'),false);
 Form1.label2.Caption:='3';
 copyfile(PChar(path+'1\3.avi'),PChar(path+'2\3.avi'),false);
 Form1.label2.Caption:='end';
end;

end.


DVM   (2012-11-21 15:56:00) [24]


> Xmen   (21.11.12 15:38) [2]

"Multithreading - The Delphi Way"
"Многопоточность - как это делается в Дельфи"
Martin Harvey.
Version 1.1a

http://forum.vingrad.ru/topic-60076.html

Подробнее уж некуда. Там и с примерами и т.д.


Xmen   (2012-11-21 15:38:00) [25]

Пару раз из примеров взял код выполнил не получился. Потоки для меня все еще не понятен.


DVM   (2012-11-21 15:27:00) [26]


> Теперь вопрос как можно сделать так чтобы приём файла была
> в отдельном потоке и пака принимается файл не зависала программа.
>

Создать поток и перенести код приема туда? В чем вопрос непонятно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо