Q&A

  • DHTML Edit Control를 델파이 쓰레드에서 사용할때 문제점 질문
쓰레드를 사용하지 않고 DHTML Edit 컴포넌트를 사용했을때는

에러없이 잘돌아가는데..

쓰레드를 사용할경우 에러가 납니당...



현제 VB에서 지원하지 않는 몇가지 문제점을 해결하기 위해

델파이로 단위 테스트를 하며 컨버젼 작업을 수행하려하는데..

문서, URL 페이지 로딩시 CUP부하가 많아 쓰레드 처리를 하려는데

델파이에서 에러가 나네용...



혹시나 해서 JAVA++에서 만들어 보았더니.. 잘 돌아가는군요..



샘플 소스를 올립니다.. 프로젝트 파일은 첨프 하겠습니다..

문제점, 해결방안을 지적 해주십시요.



델파이에서는 5.0, 6.0에서 테스트 해보았는데..

5.0에서는 에러처리는 하지 않는데, 결과(로딩)이 안나오네요.

6.0에서는 엑세스 바이올레이션 에러가 처리 됩니다.

감사합니다.





=============================

Source (.pas)

=============================

unit Test;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, OleCtrls, DHTMLEDLib_TLB, StdCtrls, Buttons;



type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

BitBtn1: TBitBtn;

DHTMLEdit1: TDHTMLEdit;

ProgressBar1: TProgressBar;

Animate1: TAnimate;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure ActionView();

end;



TDHTML_Thread = class(TThread)

private

protected

public

procedure Execute; override;

end;



TProBar_Thread = class(TThread)

private

protected

public

procedure Execute; override;

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.ActionView();

begin

DHTMLEdit1.LoadURL(Edit1.Text);

end;



procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if (Edit1.Text <> '') then

begin

TProBar_Thread.Create(false);



TDHTML_Thread.Create(false);

end

else

begin

ShowMessage('Url을 입력하세요');

ActiveControl := Edit1;

end;

end;



// DHTML Edit Thread //

procedure TDHTML_Thread.Execute;

begin

Form1.ActionView();

end;



// Progress Bar Thread //

procedure TProBar_Thread.Execute;

var

i : integer;

begin

for i:=0 to 100000 do

begin

Form1.ProgressBar1.Position := i;

end;



for i:=100000 downto 0 do

begin

Form1.ProgressBar1.Position := i;

end;

end;



end.









0  COMMENTS