웹브라우져 콤포넌트를 이용하여 채팅창을 만들었는데 이상한 에러가 납니다.
Chat_F 에 웹브라우져 콤폰넌트를 놓았습니다.
신텍스 에러는 없구요 내용은 다음과 같습니다.
메인창에서 채팅창을 띄웁니다.
창이없을때
Chat_F := TChat_F.Create(nil);
Chat_F.Show;
Chat_F.WebString(파라미터들...);
창이있을때
Chat_F.WebString(파라미터들...);
채팅창의 FormCreate 이벤트
WebBrowser1.Navigate('About:Blank');
채팅창의 WebString
begin
..
tmp := WebBrowser1.OleObject.Document.Body.innerHTML; <- access violation error
..
end;
여기에서 엑세스 바이올레이션 에러가 나는군요.
WebBrowser1.Navigate('About:Blank'); 이걸 안했을때랑 같은 에러입니다.
Chat_F.WebString(파라미터들...); 호출하는 부분은 두군데 있습니다.
처음 채팅창이 없으면 위와같이 생성해서 메세지를 넘겨주고
이미 채팅창이 있다면 생성하지 않고 메세지만 뿌려줍니다.
그래서 생성만 하고 처음 메세지를 뿌리지 않으면 다음번 메세지부터는 에러없이
잘뿌려집니다. 그래서 처음메세지 한줄이 안나오게 됩니다.
생성하고 저 메세지 뿌리는 함수가 호출될때 에러가 나는건데 이유를 모르겠습니다.
동적생성한폼에선 다른처리를 해줘야 합니까?
질문이 제대로 됬는지 모르겠지만 비슷한 경험하신분들 답변부탁드립니다
while WebBrowser1.ReadyState <> 4 do
Application.ProcessMessages;
WebBrowser1.Navigate('About:Blank') 와 WebString호출사이에 위의 문장을 추가해 보세요...