Webbrowser Post ve 'Variant or SafeArray is locked' sorunu..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

Webbrowser Post ve 'Variant or SafeArray is locked' sorunu..

Mesaj gönderen oklawa »

Kod: Tümünü seç

Function EncodePostData(StringValue: String): OleVariant;
Var
  PostData: OleVariant;
  I: Integer;
Begin
  PostData := VarArrayCreate([0, Length(StringValue) - 1], varByte);
  For I := 1 To Length(StringValue) Do PostData[I - 1] := Ord(StringValue[I]);
  Result := PostData;
End;

Procedure PostIt(Browser:TWebBrowser;FrameName:String;Text:String);
Var
  EncodedDataString: String;
  PostData: OleVariant;
  Headers: OleVariant;
  URL:OleVariant;
  Flags:Olevariant;
  TargetFrameName:OleVariant;
Begin
  Url:='http://www.htmlcodetutorial.com/frames/nestedfs.html';
  TargetFrameName:=FrameName;
  Flags:=0;
  Headers := 'Content-Type: application/x-www-form-urlencoded';
  EncodedDataString := 'mesaj=' + HttpEncode(Text);
  PostData := EncodePostData(EncodedDataString);
  Browser.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostIt(WebBrowser1,'RECIPES',PostMemo.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  PostIt(WebBrowser1,'_blank',PostMemo.Text);
end;
Yukarıdaki kodlar sorunu test etmek için yaptığım ufak bir projeden.
Tamamı burada.

Sorun ise;
WebBrowser nesnesindeki bir frame'e post etmek istediğimde 'Variant or safe array is locked' hata mesajını alıyorum ama işlem normal bir şekilde gerçekleşiyor.
Hedef frame için '_blank' kullanırsam yeni sayfa normal bir şekilde açılıyor ve hata mesajı almıyorum.

Sorun nerede acaba?
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Mesaj gönderen Search »

try-except blogu arasına alırsan exe de normal calısır hata vermez.

Kod: Tümünü seç

begin
     try
        PostIt(WebBrowser1,'RECIPES',PostMemo.Text);
     except
   end;
 end;
kolay gelsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

Mesaj gönderen oklawa »

Sağol üstad..

Denemiştim, yine denedim ama aynı hatayı alıyorum..
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Mesaj gönderen Search »

Arkadasım ben denedim bende hata vermedi istedegin cerceve icerisinde tekrar sayfayı create etti try-except i kullan direk exe den calıstır dene istersen...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

Mesaj gönderen oklawa »

Çok sağol üstad..
O kadar uğraştım ama exe'yi çalıştırıp denemek aklıma gelmemişti..
İnan saatlerdir bu konuyla yüzlerce yazı okudum, artık beynim bulandı derken senin cevabın hızır gibi yetişti..
Cevapla