powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запуск программ
25 сообщений из 61, страница 2 из 3
Запуск программ
    #39492928
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar1. Можешь примером кинуть?
Пример выше был. А если по последнему, чтоб прямо свой-свой поток, то просто пропертей наделай своему потоку и заполняй их конструктором потока (TMyThread.Create(const SomeVar1, SomeVar2)
Gallemar2. Это как? Отдельный контейнер для фибов? Или как?
Это в каждом execute создаешь ручками fibdatabase, fibтранзакцию и fibзапрос и там же с ними прощаешься.
...
Рейтинг: 0 / 0
Запуск программ
    #39493166
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
по п.2 переписал в таком виде:
Код: pascal
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.
procedure TMyThread.Execute;
      var
            start_time: tdatetime;
            stop_time: tdatetime;
            tsr : tsearchrec;
            tsr1 : tsearchrec;
            path_files, path_exe: string;
            path_kind : integer;
            db :   TpFIBDatabase;
            trans : TpFIBTransaction;
            query:   TpFIBQuery;
begin
            db:=TpFIBDatabase.Create(nil);
             trans:= TpFIBTransaction.Create(nil);
            query:= TpFIBQuery.Create(nil);
            db.connectparams.Username:='SYSDBA';
            db.connectparams.Password:='masterkey';
            db.DatabaseName:='d:\FDBase\FB_LOG_DATABASE.FDB';
            db.DefaultUpdateTransaction:=trans;
            db.LibraryName:= 'fbclient.dll';
            trans.DefaultDatabase:=db;
            query.Database:=db;
            query.Transaction:=trans;
            db.connected:=True;
                    FreeOnTerminate := true;
                    path_files := tpath1;
                    path_exe := tpath2;
                    path_kind := strtoint(tkind);
                    start_time := now;
                    //проверяем, есть ли файлы в каталогах
                    if FindFirst(path_files + '*.xls',faAnyFile,tsr1) = 0 then begin
       //есть, идем дальше
                      FindClose(tsr1);
                      query.SQL.Clear;
                      query.SQL.Add('insert into IMPORT_LOG (WRITE_TIME,FILE_NAME,FILE_DATE,KIND) values (current_timestamp,:FILE_NAME,:FILE_DATE,:KIND)');
                      trans.StartTransaction;
                      //вытаскиваем информацию о заливаемых файлах
                      if FindFirst(path_files + '*.xls',faAnyFile,tsr) = 0 then
                        repeat
                            if (tsr.attr and faDirectory) = faDirectory  then Continue;
                            //записываем данные
                                      query.ParamByName('FILE_NAME').Value:= tsr.name;
                                      query.ParamByName('FILE_DATE').Value:= FileDateToDateTime(tsr.time);
                                      query.ParamByName('KIND').Value:= path_kind;
                                      query.ExecQuery();
                        until FindNext(tsr) <> 0;
                    trans.Commit;
                    db.Free;
                    trans.Free;
                    query.Free;
                    FindClose(tsr);
                    RunAppAndWait(path_exe, 'c:\S-Market\');

                    stop_time := now;
                  { ...    }
                    end else
                    //файлов нет, фиксируем холостой запуск
                           begin
                                FindClose(tsr1);
                             {  ...    }
                           end;

end;


Пока сделал для одного запроса, не могу понять почему он не выполняется. В мониторинге коннекты вижу.
...
Рейтинг: 0 / 0
Запуск программ
    #39493182
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде разобрался
Код: pascal
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.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,inifiles, FIBQuery, pFIBQuery,FIBDatabase,  pFIBDatabase ;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;

    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

    TMyThread = class(TThread)
    private
    { Private declarations }
  protected
    procedure Execute; override;
    Function RunAppAndWait(CmdLine, WorkDir: string): boolean;
  end;

var
    Form1: TForm1;
    // TMyThread
    MyThread: TMyThread;
    tpath1, tpath2: string;
    tkind: string;

implementation

{$R *.dfm}
Function TMyThread.RunAppAndWait(CmdLine, WorkDir: string): boolean;     //Запустить программу и дождатся завершения
Var SI: TStartupInfo;
    PI : TProcessInformation;
Begin
   ZeroMemory(@SI, SizeOf(SI));
   SI.cb := SizeOf(SI);
   Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false, 0, nil, PChar(WorkDir), SI, PI);
   If Result Then Begin
      CloseHandle(PI.hThread);
      WaitForSingleObject(PI.hProcess, INFINITE);
      CloseHandle(PI.hProcess)
   End
End;

procedure TMyThread.Execute;
      var
            start_time: tdatetime;
            stop_time: tdatetime;
            tsr : tsearchrec;
            tsr1 : tsearchrec;
            path_files, path_exe: string;
            path_kind : integer;
            db1,db2,db3 :   TpFIBDatabase;
            trans1,trans2,trans3 : TpFIBTransaction;
            query1,query2,query3:   TpFIBQuery;
begin
            db1:=TpFIBDatabase.Create(nil);
            trans1:= TpFIBTransaction.Create(nil);
            query1:= TpFIBQuery.Create(nil);
            db1.connectparams.Username:='SYSDBA';
            db1.connectparams.Password:='masterkey';
            db1.DatabaseName:='d:\FDBase\FB_LOG_DATABASE.FDB';
            db1.DefaultUpdateTransaction:=trans1;
            db1.LibraryName:= 'fbclient.dll';
            trans1.DefaultDatabase:=db1;
            query1.Database:=db1;
            query1.Transaction:=trans1;
            db1.connected:=True;
                    FreeOnTerminate := true;
                    path_files := tpath1;
                    path_exe := tpath2;
                    path_kind := strtoint(tkind);
                    start_time := now;
                    //проверяем, есть ли файлы в каталогах
                    if FindFirst(path_files + '*.xls',faAnyFile,tsr1) = 0 then begin
       //есть, идем дальше
                      FindClose(tsr1);
                      query1.SQL.Clear;
                      query1.SQL.Add('insert into IMPORT_LOG (WRITE_TIME,FILE_NAME,FILE_DATE,KIND) values (current_timestamp,:FILE_NAME,:FILE_DATE,:KIND)');
                      trans1.StartTransaction;
                      //вытаскиваем информацию о заливаемых файлах
                      if FindFirst(path_files + '*.xls',faAnyFile,tsr) = 0 then
                        repeat
                            if (tsr.attr and faDirectory) = faDirectory  then Continue;
                            //записываем данные
                                      query1.ParamByName('FILE_NAME').Value:= tsr.name;
                                      query1.ParamByName('FILE_DATE').Value:= FileDateToDateTime(tsr.time);
                                      query1.ParamByName('KIND').Value:= path_kind;
                                      query1.ExecQuery();
                        until FindNext(tsr) <> 0;
                    trans1.Commit;

                    FindClose(tsr);
                    RunAppAndWait(path_exe, 'c:\S-Market\');
                    db1.Free;
                    trans1.Free;
                    query1.Free;
                    stop_time := now;
                    db2:=TpFIBDatabase.Create(nil);
                    trans2:= TpFIBTransaction.Create(nil);
                    query2:= TpFIBQuery.Create(nil);
                    db2.connectparams.Username:='SYSDBA';
                    db2.connectparams.Password:='masterkey';
                    db2.DatabaseName:='d:\FDBase\FB_LOG_DATABASE.FDB';
                    db2.DefaultUpdateTransaction:=trans2;
                   db2.LibraryName:= 'fbclient.dll';
                    trans2.DefaultDatabase:=db2;
                    query2.Database:=db2;
                    query2.Transaction:=trans2;
                    db2.connected:=True;
                    query2.SQL.Clear;
                    query2.SQL.Add('insert into IMPORT_TIME_LOG (START1,STOP1,KIND) values (:START1,:STOP1,:KIND)');
                    trans2.StartTransaction;
                    query2.ParamByName('START1').Value:= start_time;
                    query2.ParamByName('STOP1').Value:= stop_time;
                    query2.ParamByName('KIND').Value:= path_kind;
                    query2.ExecQuery();
                    trans2.Commit;
                    db2.Free;
                    trans2.Free;
                    query2.Free;
                    end else
                    //файлов нет, фиксируем холостой запуск
                           begin
                           db3:=TpFIBDatabase.Create(nil);
                            trans3:= TpFIBTransaction.Create(nil);
                            query3:= TpFIBQuery.Create(nil);
                            db3.connectparams.Username:='SYSDBA';
                            db3.connectparams.Password:='masterkey';
                            db3.DatabaseName:='d:\FDBase\FB_LOG_DATABASE.FDB';
                            db3.DefaultUpdateTransaction:=trans3;
                            db3.LibraryName:= 'fbclient.dll';
                            trans3.DefaultDatabase:=db3;
                            query3.Database:=db3;
                            query3.Transaction:=trans3;
                            db3.connected:=True;
                                FindClose(tsr1);
                                query3.SQL.Clear;
                                query3.SQL.Add('insert into IMPORT_EXISTS_LOG (WRITE_TIME,KIND) values (current_timestamp,:KIND)');
                                trans3.StartTransaction;
                                query3.ParamByName('KIND').Value:= path_kind;
                                query3.ExecQuery();
                                trans3.Commit;
                                db3.Free;
                                trans3.Free;
                                query3.Free;
                           end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
    i : integer;
    fini: TIniFile;
    sections: TStringList;
    tpath3: string;
  //  tpath1, tpath2: string;
begin
    memo1.Lines.Clear;
    fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini');
    tpath3 := ExtractFilepath(Application.ExeName);
    sections := TStringList.Create;
    fini.ReadSections(sections);
    //проходим по настройкам, получаем пути
for i :=0 to (sections.Count)-1   do
begin
    memo1.Lines.Add(fini.ReadString(sections[i],'source',''));
    memo1.Lines.Add(fini.ReadString(sections[i],'target',''));
    memo1.Lines.Add(fini.ReadString(sections[i],'kind',''));
    tpath1:=  fini.ReadString(sections[i],'source','');
    tpath2:=  fini.ReadString(sections[i],'target','');
    tkind:=  fini.ReadString(sections[i],'kind','');
   MyThread:=TMyThread.Create(False);
   MyThread.Priority:=tpNormal;

end;
end;

end.

...
Рейтинг: 0 / 0
Запуск программ
    #39493217
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman пропертей наделай своему потоку и заполняй их конструктором потока (TMyThread.Create(const SomeVar1, SomeVar2)

Вместо глобальных переменных использовать свойства?
...
Рейтинг: 0 / 0
Запуск программ
    #39493248
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarwadman пропертей наделай своему потоку и заполняй их конструктором потока (TMyThread.Create(const SomeVar1, SomeVar2)

Вместо глобальных переменных использовать свойства?
Верно. С ними будет работать только сам поток и они не будут переплетаться со свойствами других потоков.
...
Рейтинг: 0 / 0
Запуск программ
    #39493251
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, всю ночь ждал когда напишешь :) У меня небольшое чп с базой произошло, посплю и буду смотреть. Док ещё подсказку скинул.
...
Рейтинг: 0 / 0
Запуск программ
    #39493399
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал вот в таком виде:
Код: pascal
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.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,inifiles, FIBQuery, pFIBQuery,FIBDatabase,  pFIBDatabase ;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;

    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

    TMyThread = class(TThread)
    private
    { Private declarations }
    s : string;
  protected
    procedure Execute; override;
    Function RunAppAndWait(CmdLine, WorkDir: string): boolean;
    public
    constructor Create(CreateSuspended: Boolean);
  end;

var
    Form1: TForm1;
    // TMyThread
    //MyThread: TMyThread;
    tpath1, tpath2: string;
    tkind: string;

implementation

{$R *.dfm}
Function TMyThread.RunAppAndWait(CmdLine, WorkDir: string): boolean;     //&#199;&#224;&#239;&#243;&#241;&#242;&#232;&#242;&#252; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#243; &#232; &#228;&#238;&#230;&#228;&#224;&#242;&#241;&#255; &#231;&#224;&#226;&#229;&#240;&#248;&#229;&#237;&#232;&#255;
Var SI: TStartupInfo;
    PI : TProcessInformation;
Begin
   ZeroMemory(@SI, SizeOf(SI));
   SI.cb := SizeOf(SI);
   Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false, 0, nil, PChar(WorkDir), SI, PI);
   If Result Then Begin
      CloseHandle(PI.hThread);
      WaitForSingleObject(PI.hProcess, INFINITE);
      CloseHandle(PI.hProcess)
   End
End;

   constructor TMyThread.Create(CreateSuspended: Boolean);
begin
  Priority:= tpLower;
  FreeOnTerminate:= False;
  inherited Create(CreateSuspended);
end;

procedure TMyThread.Execute;
      var
            tsr : tsearchrec;
            tsr1 : tsearchrec;
            path_files, path_exe: string;

begin
       {   ...  }
                    FreeOnTerminate := true;
                    path_files := tpath1;
                    path_exe := tpath2;
                 
                    if FindFirst(path_files + '*.xls',faAnyFile,tsr1) = 0 then begin
   
                      FindClose(tsr1);
                    {  ...   }
       
                      if FindFirst(path_files + '*.xls',faAnyFile,tsr) = 0 then
                        repeat
                            if (tsr.attr and faDirectory) = faDirectory  then Continue;
                                     { ..}
                        until FindNext(tsr) <> 0;
                   { .. }

                    FindClose(tsr);
                    RunAppAndWait(path_exe, 'c:\S-Market\');
                  {  ...  }
                    end else
                           begin
                         {  ...  }
                           end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
    i : integer;
    fini: TIniFile;
    sections: TStringList;
    tpath3: string;
  //  tpath1, tpath2: string;
  MyThread: TMyThread;
begin
    memo1.Lines.Clear;
    fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini');
    tpath3 := ExtractFilepath(Application.ExeName);
    sections := TStringList.Create;
    fini.ReadSections(sections);
for i :=0 to (sections.Count)-1   do
begin
    memo1.Lines.Add(fini.ReadString(sections[i],'source',''));
    memo1.Lines.Add(fini.ReadString(sections[i],'target',''));
    memo1.Lines.Add(fini.ReadString(sections[i],'kind',''));
    tpath1:=  fini.ReadString(sections[i],'source','');
    tpath2:=  fini.ReadString(sections[i],'target','');
    tkind:=  fini.ReadString(sections[i],'kind','');
   MyThread:=TMyThread.Create(False);
   MyThread.Priority:=tpNormal;
   MyThread.s := tpath2;

end;
end;

end.



Компилируется, но получаю ошибку неверного дескриптора. Подскажите, где ошибка?
...
Рейтинг: 0 / 0
Запуск программ
    #39493707
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Выложи тестовый проект в архиве и версию дельфей, на которой пришешь
...
Рейтинг: 0 / 0
Запуск программ
    #39493747
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://yadi.sk/d/hBqisfHr3LL6EQ
это на семерке. Запросы я все закомментировал, чтобы не мешали, только в uses прописаны фибы.
...
Рейтинг: 0 / 0
Запуск программ
    #39493780
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

попробуй так
Код: pascal
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.
    TMyThread = class(TThread)
    private
    { Private declarations }
    Fpath1, Fpath2,Fkind: string;
  protected
    procedure Execute; override;
    Function RunAppAndWait(CmdLine, WorkDir: string): boolean;
    public
    constructor Create(CreateSuspended: Boolean; var Apath1, Apath2, Akind : string);
  end;
...
var
    Form1: TForm1;
    // TMyThread
    //MyThread: TMyThread;
//    tpath1, tpath2: string;
//    tkind: string;
...
   constructor TMyThread.Create(CreateSuspended: Boolean; var Apath1, Apath2, Akind : string);
begin
  Priority:= tpLower;
  Fpath1:= Apath1;
  Fpath2:= Apath2;
  Fkind:=Akind;
//  FreeOnTerminate:= False;

  inherited Create(CreateSuspended);
end;

procedure TMyThread.Execute;
      var
           // start_time: tdatetime;
            //stop_time: tdatetime;
            tsr : tsearchrec;
            tsr1 : tsearchrec;
//            path_files, path_exe: string;//меняешь в коде на Fpath1, Fpath2 или используешь напрямую
...
           db1.connected:=True;
//                    FreeOnTerminate := true;

...
procedure TForm1.Button1Click(Sender: TObject);
...
for i :=0 to (sections.Count)-1   do
begin
MyThread:=TMyThread.Create(True, 'сюда свои пути к чему-то там');
memo1.Lines.Add(fini.ReadString(sections[i],'source',''));
...
MyThread.Resume;
end


основной посыл:
- все строки можно передавать в параметрах
- FreeOnTerminate определяется либо в момент создания, либо в конструкторе
- FreeOnTerminate = False, если только собираешься уничтожать поток после завершения сам
...
Рейтинг: 0 / 0
Запуск программ
    #39493790
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, FreeOnTerminate:= True все-таки пропиши где-нибудь (лучше в конструкторе) :)
...
Рейтинг: 0 / 0
Запуск программ
    #39493801
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокGallemar,
попробуй так

procedure TForm1.Button1Click(Sender: TObject);
...
for i :=0 to (sections.Count)-1 do
begin
==>MyThread:=TMyThread.Create(True, >>>'сюда свои пути к чему-то там'<<<);
memo1.Lines.Add(fini.ReadString(sections,'source',''));
...
==>MyThread.Resume;
end

[/src]


Попробовал, затык на процедуре:
Код: pascal
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.
procedure TForm1.Button1Click(Sender: TObject);
var
    i : integer;
    fini: TIniFile;
    sections: TStringList;
    tpath1,tpath2,tpath3: string;
  //  tpath1, tpath2: string;
  MyThread: TMyThread;
  tkind: string;
begin
    memo1.Lines.Clear;
    fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini');
    tpath3 := ExtractFilepath(Application.ExeName);
    sections := TStringList.Create;
    fini.ReadSections(sections);
    //проходим по настройкам, получаем пути
for i :=0 to (sections.Count)-1   do
begin
    memo1.Lines.Add(fini.ReadString(sections[i],'source',''));
    memo1.Lines.Add(fini.ReadString(sections[i],'target',''));
    memo1.Lines.Add(fini.ReadString(sections[i],'kind',''));
    tpath1:=  fini.ReadString(sections[i],'source','');
    tpath2:=  fini.ReadString(sections[i],'target','');
    tkind:=  fini.ReadString(sections[i],'kind','');
[i]   MyThread:=TMyThread.Create(True,tpath2);
   MyThread.Priority:=tpNormal;
   MyThread.Resume;

end;



Not enough actual parameters
...
Рейтинг: 0 / 0
Запуск программ
    #39493803
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarNot enough actual parameters
т.е. у тебя в объявлении процедуры параметров больше, чем ты пытаешься объявить при вызове. Игорь, посмотри код внимательнее и включи мозг - это элементарные ошибки :)
...
Рейтинг: 0 / 0
Запуск программ
    #39493811
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,исправил. Всё равно ошибка Thread Error: Неверный дескриптор (6)
...
Рейтинг: 0 / 0
Запуск программ
    #39493824
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

давай код или лучше прикрепи архив с проектом :)
...
Рейтинг: 0 / 0
Запуск программ
    #39493826
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запуск программ
    #39494028
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

пробуй
Код: pascal
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.
constructor TMyThread.Create(CreateSuspended: Boolean; var Apath1, Apath2, Akind : string);
begin
  inherited Create(CreateSuspended);
  Priority:= tpLower;
  FreeOnTerminate:= True;
  Fpath1:= Apath1;
  Fpath2:= Apath2;
  Fkind:= Akind;
  if CreateSuspended then Resume;
end;
//=======================
procedure TForm1.Button1Click(Sender: TObject);
var
    i: integer;
    fini: TIniFile;
    sections: TStringList;
    tpath1
    ,tpath2
    ,tpath3
    , tkind: string;
    MyThread: TMyThread;
begin
    memo1.Lines.Clear;
    sections := TStringList.Create;
    try
      fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini');
      tpath3 := ExtractFilepath(Application.ExeName);
      fini.ReadSections(sections);
      //&#239;&#240;&#238;&#245;&#238;&#228;&#232;&#236; &#239;&#238; &#237;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#224;&#236;, &#239;&#238;&#235;&#243;&#247;&#224;&#229;&#236; &#239;&#243;&#242;&#232;
      for i:= 0 to pred(sections.Count) do
      begin
        tpath1:=  fini.ReadString(sections[i],'source','');
        tpath2:=  fini.ReadString(sections[i],'target','');
        tkind:=  fini.ReadString(sections[i],'kind','');

        memo1.Lines.Add(tpath1);
        memo1.Lines.Add(tpath2);
        memo1.Lines.Add(tkind);

        MyThread:= TMyThread.Create(True,tpath2,tpath1,tkind);
      end;
    finally
      FreeAndNil(sections);
    end;
end;


зы. Игорь, ты код в блокноте пишешь что ли?
...
Рейтинг: 0 / 0
Запуск программ
    #39494029
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокGallemar,

пробуй
Код: pascal
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.
constructor TMyThread.Create(CreateSuspended: Boolean; var Apath1, Apath2, Akind : string);
begin
  inherited Create(CreateSuspended);
  Priority:= tpLower;
  FreeOnTerminate:= True;
  Fpath1:= Apath1;
  Fpath2:= Apath2;
  Fkind:= Akind;
  if CreateSuspended then Resume;
end;
//=======================
procedure TForm1.Button1Click(Sender: TObject);
var
    i: integer;
    fini: TIniFile;
    sections: TStringList;
    tpath1
    ,tpath2
    ,tpath3
    , tkind: string;
    MyThread: TMyThread;
begin
    memo1.Lines.Clear;
    sections := TStringList.Create;
    try
      fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini');
      tpath3 := ExtractFilepath(Application.ExeName);
      fini.ReadSections(sections);
      //&#239;&#240;&#238;&#245;&#238;&#228;&#232;&#236; &#239;&#238; &#237;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#224;&#236;, &#239;&#238;&#235;&#243;&#247;&#224;&#229;&#236; &#239;&#243;&#242;&#232;
      for i:= 0 to pred(sections.Count) do
      begin
        tpath1:=  fini.ReadString(sections[i],'source','');
        tpath2:=  fini.ReadString(sections[i],'target','');
        tkind:=  fini.ReadString(sections[i],'kind','');

        memo1.Lines.Add(tpath1);
        memo1.Lines.Add(tpath2);
        memo1.Lines.Add(tkind);

        MyThread:= TMyThread.Create(True,tpath2,tpath1,tkind);
      end;
    finally
      FreeAndNil(sections);
    end;
end;


зы. Игорь, ты код в блокноте пишешь что ли?

Нет,просто взял для теста
...
Рейтинг: 0 / 0
Запуск программ
    #39494330
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эдик, спасибо, всё работает. Тут только
Код: plaintext
MyThread:= TMyThread.Create(True,tpath2,tpath1,tkind); 
порядок параметров перепутан был.
...
Рейтинг: 0 / 0
Запуск программ
    #39494376
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Игорь, пиши лучше на Лазаре. Из плюсов: встроенная подсветка кода, встроенный механизм публикации проекта. Д7, конечно, классика, но ...

зы. об твой код ноги ломать можно
...
Рейтинг: 0 / 0
Запуск программ
    #39494381
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокGallemar,
Игорь, пиши лучше на Лазаре. Из плюсов: встроенная подсветка кода, встроенный механизм публикации проекта. Д7, конечно, классика, но ...
Привык к семерке, Лазарь пока щупаю, для работы на нем не пишу.
Докзы. об твой код ноги ломать можно

Это как?
Форматирование ужасное или сам код?
...
Рейтинг: 0 / 0
Запуск программ
    #39494391
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокИз плюсов: встроенная подсветка кода, встроенный механизм публикации проекта.
Из минусов - размер release кода больше чем в Токио :(
...
Рейтинг: 0 / 0
Запуск программ
    #39494392
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpДокИз плюсов: встроенная подсветка кода, встроенный механизм публикации проекта.
Из минусов - размер release кода больше чем в Токио :(
Это такая мелочь
...
Рейтинг: 0 / 0
Запуск программ
    #39494400
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpИз минусов - размер release кода больше чем в Токио :(
Дефолт с одной формочкой:
Код: plaintext
1.
Delphi 10.2 - 2 221 568 bytes
Lazarus 1.9 - 1 966 592 bytes
...
Рейтинг: 0 / 0
Запуск программ
    #39494407
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyalekcvpИз минусов - размер release кода больше чем в Токио :(
Дефолт с одной формочкой:
Код: plaintext
1.
Delphi 10.2 - 2 221 568 bytes
Lazarus 1.9 - 1 966 592 bytes

Видимо что-то поправили, когда я смотрел (честно - давно), у меня меньше 2х с чем-то никак не получалось.
Но всё равно, 2 мегабайта за проект, который ничего не умеет делать - это печальная тенденция.
Видимо поэтому всякие Inno Setup и Total Commanderы до последнего собирались на Delphi 2.0 :)
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запуск программ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]