Merhaba,
kaynak kodu çektiğim bir kodum var.
button click olayına şu kodları yazıyorum
idhttp.get(url);
idhttp.free;
ilk tıkladığımda sıkıntı yok ikinci tıkladığımda access violation hatası alıyorum.
Herhalde bu idhttp.free yi bir şekilde yeniden active etmeliyim.
Yardımlarınız için teşekkürler şimdiden
İdhttp.free sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: İdhttp.free sorunu
Merhaba,
İlgili ButonClick() prosedürünü paylaşabilir misiniz?
İlgili ButonClick() prosedürünü paylaşabilir misiniz?
-
- Üye
- Mesajlar: 76
- Kayıt: 01 Nis 2016 03:58
Re: İdhttp.free sorunu
Kod: Tümünü seç
procedure TForm1.button1Click(Sender: TObject);
var
b:string;
begin
b:='https://www.youtube.com/watch?v=B_uZa5q3hbQ';
sinmemo.Text:=Idhttp1.Get(b);
idhttp1.free;
end;
sanırım sorun idhttp1.free de ama o free orda olmak zorunda
-
- Üye
- Mesajlar: 76
- Kayıt: 01 Nis 2016 03:58
Re: İdhttp.free sorunu
Şunu eklemek istiyorum :
İdhttp ile çektiğim kaynak kodunu mail ile gönderiyorum bunun için idsmtp kullanıyorum fakat idhttp ile çektikten sonra idsmtp mail göndermiyor ancak idhttp'yi idhttp.free olarak aldıktan sonra mail gönderebiliyor. bu sebeple free olmalı ya da idhttp ile idsmtp'nin neden bir arada çalışmadığını söylerseniz de sorunu çözebiliriz
İdhttp ile çektiğim kaynak kodunu mail ile gönderiyorum bunun için idsmtp kullanıyorum fakat idhttp ile çektikten sonra idsmtp mail göndermiyor ancak idhttp'yi idhttp.free olarak aldıktan sonra mail gönderebiliyor. bu sebeple free olmalı ya da idhttp ile idsmtp'nin neden bir arada çalışmadığını söylerseniz de sorunu çözebiliriz
Re: İdhttp.free sorunu
IdSmtp ile mail gönderen kodu paylaşabilir misiniz? Sorununuz yüksek ihtimalle o kısımda.
Re: İdhttp.free sorunu
Öncelikle yukarıdaki kod ile ilgili birkaç noktaya dikkat çekmek istiyorum.hakanharbeli yazdı:burada butona 2. defa tıkladığımda access violation hatası alıyorum.Kod: Tümünü seç
procedure TForm1.button1Click(Sender: TObject); var b:string; begin b:='https://www.youtube.com/watch?v=B_uZa5q3hbQ'; sinmemo.Text:=Idhttp1.Get(b); idhttp1.free; end;
sanırım sorun idhttp1.free de ama o free orda olmak zorunda
1- Kod yazarken tüm satırları ilk kolondan başlatmayın. Bu tür kodları okumak hiç kolay olmaz. Bloklar halinde begin..end, try..finally..end vb. arasında kalan kodları en az iki karakter içeriden yazmaya çalışın.
2- Bileşen isimleri her ne kadar programcı kullanımına bırakılmış olsa da kullandığınız dilin genel kabul görmüş bileşen/değişken adı kullanımına uymanızda fayda var. Pascal için genelde kelimelerin ilk harfleri büyük yazılacak şekilde bileşen/değişken adı kullanılır.
3- Prosedür/fonksiyon tanımlarında veya "var" ile değişken tanımlarında iki noktadan (:) sonra bir boşluk bırakmanızda fayda var.
4- Değişken atamalarında ":=" önünde ve arkasında boşluk bırakmanızda fayda var.
Burada anlatmaya çalıştıklarımı aşağıdaki örnek kod içinde görebilirsiniz.
Bunlar her ne kadar kural olmasa da 6 ay veya 1 sene sonra kod içinde değişiklik yapmaya çalıştığınızda koşullar/çalışma sırası gibi kavramları çok daha hızlı hatırlamanıza yardımcıdır.
Sorunuza gelince; Form üzerindeki IdHttp1 bileşenini silip buton tıklamasına aşağıdaki şekilde bir kod yazmanız mümkün.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
Http: TIdHttp;
begin
Http := TIdHttp.Create(nil);
try
Memo1.Text := Http.Get('https://www.youtube.com/watch?v=B_uZa5q3hbQ');
finally
Http.Free();
end;
end;
-
- Üye
- Mesajlar: 76
- Kayıt: 01 Nis 2016 03:58
Re: İdhttp.free sorunu
Çok teşekkürler hocam önerilerinizi dikkate alacağım. sorunu çözdüm idhttp ve idsmtp'de aynı SSL bileşenini kullanmışım form'a her ikisi için de ayrı iki tane atmalıymışım