Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
ВнизПотоки Найти похожие ветки
← →
ed30 (2002-12-30 18:41) [0]Добрый день. Кусок кода:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyThread := TMyThread.Create(False);
MyThread.FreeOnTerminate := True;
MyThread.Priority := tpLowest;
end;
procedure TMyThread.Execute;
var
i: Integer;
begin
for i := 0 to Form1.FilesList.Count - 1 do begin
if Terminated then Exit;
CreateMaket;
Synchronize(ShowResult);
if Terminated then Exit;
end;
end;
procedure TMyThread.ShowResult;
begin
Form1.ProgressBar1.StepIt;
end;
function TMyThread.CreateMaket;
var
Waiting: Boolean;
ICount: Integer;
Ext: String;
bRect: String;
TmpSt: PChar;
begin
Waiting := False;
Ext := AnsiUpperCase(ExtractFileExt(FileName));
with DataModule3.pmDdeClientConv do begin
if Ext = ".P65" then begin
TmpSt := PChar("open "" + FileName + """);
ExecuteMacro(TmpSt, Waiting);
end else begin
ExecuteMacro("new", Waiting);
ExecuteMacro("pagesize 297,420", Waiting);
TmpSt := PChar("import "" + FileName + "",0");
ExecuteMacro(TmpSt, Waiting);
ExecuteMacro("place 0,0", Waiting);
end;
ICount := 0;
repeat
ExecuteMacro("selectall", Waiting);
bRect := RequestData("getselectinfo"); //на этой строчке все останавливается
if bRect = "" then Inc(ICount);
until (PSt <> "") or (ICount > 10);
ExecuteMacro("close", Waiting);
System.Writeln(f, FileName + ": " + bRect);
if bRect = "" then Result := False
else Result := True;
end;
end;
В потоке через DDEClientConv идет управление PM. Все работает, кроме метода RequestData (приложение останавливается в этом месте и дальше не идет). Не подскажете, что я делаю не так. Если перенести метод CreateMaket в ShowResult, вызываемый из Synchronize - все работает но как-будто в основном потоке, а не в отдельном (все остальные элементы Form1 не реагируют на ввод).
Заранее спасибо. Всех с Новым Годом.
← →
gsu (2002-12-30 18:53) [1]Все методы и св-ва компонент должны использовать Synchronize, поэтому у тя при переносе работает, а так нет. Скорее всего надо засинронить все конкретные процы в createmarket, которые работают с компонентами из основного потока, может - это RequestData, а может и др.
← →
gsu (2002-12-30 18:55) [2]т.е. создал кнопь в новом потоке, так жми на нее, не боись, а если она у тя в основном, то Synchronize
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c