Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Free vs FreeAndNil
#21
(02-02-2018, Saat: 11:42)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlNot: Bu arada Nick dediğiniz adama çok da bel bağlamayın. Çok abartmayın kendisini. Bildiğim şeyler var ama açıktan yazmak bana yakışmaz.

İnsanı aklına farklı şeyler geliyor; benim ilk aklıma gelen Microsoft ajanı mı acaba? Smile
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#22
Bu konuda ben de Saadettin Bey gibi düşünüyorum. Tuğrul Bey, sizin verdiğiniz örnekler sizin savınızı güçlendirecek, ama günlük programcılıkta karşımıza çıkmayacak örnekler (tıpkı Saadettin Bey'in örnekleri gibi). 

Alıntı:Bir de sizler FreeAndNil'in oluşturabileceği ciddi sıkıntılardan bahsedin de, ben de sizlerin gördüğü ama benim bir türlü göremediğim sorunları göreyim !

FreeAndNil'in bir zararı yok. Yarattığı herhangi bir sıkıntı da yok. Önemli olan soru şu: Benim neden FreeAndNil'e ihtiyacım oldu? Demek ki bir yerlerde kodun nasıl çalıştığını adam gibi takip edemiyorum ki, nesneyi nil yapmazsam program çöküyor. Nesneyi nil yapsanız bile programınız aslında çalışmasını istemediğiniz (beklemediğiniz) bir satırı çalıştırıyor. Nesneyi nil yaparak bunu görmezden geliyorsunuz (veya durumua göre program gene hata veriyor). Şu durumda yazdığınız kod güvenli değil, çünkü aslında nasıl çalıştığını bilmiyorsunuz demektir.

İyi çalışmalar
Cevapla
#23
(02-02-2018, Saat: 12:18)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu konuda ben de Saadettin Bey gibi düşünüyorum. Tuğrul Bey, sizin verdiğiniz örnekler sizin savınızı güçlendirecek, ama günlük programcılıkta karşımıza çıkmayacak örnekler (tıpkı Saadettin Bey'in örnekleri gibi). 

Alıntı:Bir de sizler FreeAndNil'in oluşturabileceği ciddi sıkıntılardan bahsedin de, ben de sizlerin gördüğü ama benim bir türlü göremediğim sorunları göreyim !

FreeAndNil'in bir zararı yok. Yarattığı herhangi bir sıkıntı da yok. Önemli olan soru şu: Benim neden FreeAndNil'e ihtiyacım oldu? Demek ki bir yerlerde kodun nasıl çalıştığını adam gibi takip edemiyorum ki, nesneyi nil yapmazsam program çöküyor. Nesneyi nil yapsanız bile programınız aslında çalışmasını istemediğiniz (beklemediğiniz) bir satırı çalıştırıyor. Nesneyi nil yaparak bunu görmezden geliyorsunuz (veya durumua göre program gene hata veriyor). Şu durumda yazdığınız kod güvenli değil, çünkü aslında nasıl çalıştığını bilmiyorsunuz demektir.

İyi çalışmalar

Merhaba, bundan sonra bu konuya yorum yapmaya devam etmeyeceğim. Çünkü somut örnekler yerine sadece spekülasyon yapılıyor. Bahsettiğim hususlar ile şimdiye kadar karşılaşmadı iseniz, gerçekten de çok şanslı bir yazılımcı olmalısınız Bahadır bey. Free edildikten sonra Nil'e eşitlemediğiniz instance pointer'lar, Assigned metodundan doğru olarak dönerler ve siz de artık olmayan bir hafızaya referansta bulunmuş olursunuz. Bir nesne zaman zaman , bir başka metoda parametre olarak gönderilir, bir hazıfa bölgesi zaman zaman başka bir scope'da rezerve edilir ve başka bir yere parametre olarak gönderilir ve gönderildiği yerde de Free edilmesi beklenir. Bu tarz durumlar ile karşılaştığı zaman ne demek istediğimi anlayacak arkadaşlarım.

Herneyse Türkçe konuşup, Türkçe yazıyorum; ama anlaşılamadığımı görüyorum. Şu kodu yazmak ne kadar zor olabilir;

var
  C : TObject;
begin
  C := TObject.Create;
  ...
  ...
  FreeAndNil( C );
  ...
  ...
  if Assigned( C ) then
    C.Birşey;
end;

Dediğim gibi, arkadaşlarım damdan düşmesin istiyorum ama; tecrübenin paylaşılamadığının bir göstergesini burada inat ile sergiliyorsunuz.

Tamam, ben bilmiyorum, sizler biliyorsunuz. Cidden; tüm arkadaşlarım FreeAndNil kullanmasın, heryerde Free kullanın.!
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#24
(02-02-2018, Saat: 12:34)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(02-02-2018, Saat: 12:18)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu konuda ben de Saadettin Bey gibi düşünüyorum. Tuğrul Bey, sizin verdiğiniz örnekler sizin savınızı güçlendirecek, ama günlük programcılıkta karşımıza çıkmayacak örnekler (tıpkı Saadettin Bey'in örnekleri gibi). 


FreeAndNil'in bir zararı yok. Yarattığı herhangi bir sıkıntı da yok. Önemli olan soru şu: Benim neden FreeAndNil'e ihtiyacım oldu? Demek ki bir yerlerde kodun nasıl çalıştığını adam gibi takip edemiyorum ki, nesneyi nil yapmazsam program çöküyor. Nesneyi nil yapsanız bile programınız aslında çalışmasını istemediğiniz (beklemediğiniz) bir satırı çalıştırıyor. Nesneyi nil yaparak bunu görmezden geliyorsunuz (veya durumua göre program gene hata veriyor). Şu durumda yazdığınız kod güvenli değil, çünkü aslında nasıl çalıştığını bilmiyorsunuz demektir.

İyi çalışmalar

Merhaba, bundan sonra bu konuya yorum yapmaya devam etmeyeceğim. Çünkü somut örnekler yerine sadece spekülasyon yapılıyor. Bahsettiğim hususlar ile şimdiye kadar karşılaşmadı iseniz, gerçekten de çok şanslı bir yazılımcı olmalısınız Bahadır bey. Free edildikten sonra Nil'e eşitlemediğiniz instance pointer'lar, Assigned metodundan doğru olarak dönerler ve siz de artık olmayan bir hafızaya referansta bulunmuş olursunuz. Bir nesne zaman zaman , bir başka metoda parametre olarak gönderilir, bir hazıfa bölgesi zaman zaman başka bir scope'da rezerve edilir ve başka bir yere parametre olarak gönderilir ve gönderildiği yerde de Free edilmesi beklenir. Bu tarz durumlar ile karşılaştığı zaman ne demek istediğimi anlayacak arkadaşlarım.

Herneyse Türkçe konuşup, Türkçe yazıyorum; ama anlaşılamadığımı görüyorum. Şu kodu yazmak ne kadar zor olabilir;

var
  C : TObject;
begin
  C := TObject.Create;
  ...
  ...
  FreeAndNil( C );
  ...
  ...
  if Assigned( C ) then
    C.Birşey;
end;

Dediğim gibi, arkadaşlarım damdan düşmesin istiyorum ama; tecrübenin paylaşılamadığının bir göstergesini burada inat ile sergiliyorsunuz.

Tamam, ben bilmiyorum, sizler biliyorsunuz. Cidden; tüm arkadaşlarım FreeAndNil kullanmasın, heryerde Free kullanın.!

Tuğrul Bey, bence biraz alınganlık gösteriyorsunuz Smile 

Düşündüğünüz kadar şanslı bir programcı değilim, bahsettiğiniz problemlerle karşılaştım ve sonra neden olduğunu çözüp düzelttim. İlk mesajımda da FreeAndNil'i gerektiği zaman kullandığımı yazmıştım. Benim kişisel görüşüm, FreeAndNil'in bazı problemleri gizlediğidir. Siz ise tam tersini düşünüyorsunuz. Bu da programcılıkta bir tane doğru olmadığını gösteriyor, çünkü her iki durumun da avantajı ve dezavantajı var. 

Bu da benim bu konuda yazacağım son mesaj olsun. Konu verimliliğini kaybetti, ama bence güzel bir tartışma oldu Smile

İyi çalışmalar
Cevapla
#25
   

 (Herkes İçin Delphi 7 Uygulama Geliştirme Klavuzu Kitabından).Konuya Marco Cantu'nun bakışı.Elinde bir tane kitap var ondan paylaşıp duruyorsun diyeceksinizSmile Biraz eski ama Delphi'nin temellerini anlamak açısından okunması gereken bir kaynak.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#26
Konu biraz gerginleşti ama çok faydalı bilgiler çıktı kanaatimce. Bilgi ve fikirlerini paylaşan herkese teşekkürler.

Class'lar için genelde Free kullanıyordum (FreeAndNil'i form ya da component'ler için kullanıyordum) ama buradan çıkardığım sonuçlardan sonra sanırım FreeAndNil'i artık daha sık kullanırım.
Cevapla
#27
(02-02-2018, Saat: 12:58)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol (Herkes İçin Delphi 7 Uygulama Geliştirme Klavuzu Kitabından).Konuya Marco Cantu'nun bakışı.Elinde bir tane kitap var ondan paylaşıp duruyorsun diyeceksinizSmile Biraz eski ama Delphi'nin temellerini anlamak açısından okunması gereken bir kaynak.

Delphi in a Nutshell ( Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol , Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol )
objects.png


freeandnil.png
Bu da Ray Lischner yazarının bakışı hocam.
My name is nobody.
WWW
Cevapla
#28
Alınganlık göstermiyorum Bahadır bey. Ben iddia ettiğim hususu nedenleri ile izah etmeye çalıştım; bunun aksini iddia eden arkadaşlarımın da aynı yolu izlemesi icap eder idi. Belki benim hatalı bildiğim bir husus vardır. Ancak, bu şekilde bir yaklaşım sergilenmediği halde, hâla sabit bir fikir üzerinde ısrar edilmesine ve bu fikrin puanlar vasıtası ile takdir görmesine; ancak bu düşünceyi izleyenlerin neden izlediklerini madde madde ve ikna edici olarak paylaşmamalarına sinirlendim kısacası ben.

 Burası ortak bir platform. Bizlerin tartışmaları insanları yanlışa sürükler ise ben bundan üzüntü duyarım. Siz ve sizin gibi tecrübeli ve kıymetli arkadaşlarımın neden hata'da ısrar ettiğinizi anlamlandıramadım cidden.

Konunun basit bir konu olmasından dolayı çok detaylandırmak istememiştim ancak eğer illa da istiyoruz derseniz; vakit ayırmaya çalışıp, sizlere Free'nin bir dünya sakıncalı kullanımına örnekler bulup verebilirim. Özellikle ayrılmış hafıza bölgelerinin metodlar, nesneler, thread'ler arasında paylaşıldığı senaryolarda.

 Kendimden ve anlatım kaabiliyetimden şüphe ettirdiniz bana gerçekten de. Ki bir çok insan, bu konuda biraz da olsa yeteneğim olduğundan bahis eder. Tekrar ifade etmek gerekir ise; söylemlerinizden (siz ve arkadaşlarımın) alınmadım, ama bu kadar basit bir konuda neden ihtilafa düştüğümüzü anlayamadığım için sinirlendim açıkçası.

 FreeAndNil yerine Free kullanırsanız ve programcının hatasından dolayı daha önce boşaltılmış olan nesneye erişimde bulunur iseniz; bu durumda kullanıcının karşısına:

"Access violation at adress ... ıvır zıvır"

gibi bir mesaj çıkacaktır. Ardından kullanıcı, firmaya bir şekilde ulaşacak ve:

Kullanıcı(K), Programcı(P)

K: Abi, programda hata çıktı. Doğru düzgün çalışmıyor, sürekli hata veriyor bu program.
P: Sakin olun, ben size yardımcı olmaya çalışacağım. Ne hatası çıktı, hata mesajında ne yazıyordu ?
K: Bilmiyorum abi, kapattım ekranı.
P: Hımm. Peki ne yaparken çıktı bu hata ?
K: Abi bilmiyorum zırt pırt çıkıyor.
P: Size nasıl yardımcı olmamı bekliyorsunuz !!

gibi dialoglar baş gösterecektir. Bunlar yaşanmış mıdır, evet yaşanmıştır.

Peki uygulamanız da Free yerine FreeAndNil kullanmış olsaydınız ve ilgili nesneye erişim yaptığınız yerde de Assigned ile nesnenin var olup olmadığını kontrol etseydiniz bu durumda ne olacaktı ?

K: Abi bu program yapması gerekeni yapmıyor ?
P: Anlamadım, neyi yapmıyor.
K: Fatura basmıyor !
P: Anladım, çok teşekkür ederim. Hemen ilgileniyorum.

Programcı fatura basılması ile ilgili kod bloğuna gider. Assigned kontrolünü görür, ilgili nesnenin geçerli olmadığını(nil) anlar. Nesnenin nerede FreeAndNil edildiğini araştırır ve sorunu tespit eder.

Programınız kontrol edilmemiş hata mesajları ile karşılaşmaz ve uygulamanızın, firmanızın ve sizin itibarınıza da gölge düşmez.

Bu sadece çok basit bir örneği idi verebileceklerimin. Bir de çok kanallı uygulamalarda ayrılan hafızanın ayıran tarafından serbest bırakılmadığı durumlara örnekler var ki, orada karşılaşılabilecek sorunları tespit edebilmek dahi inanılmaz zor olur.

Bir kod bloğu hatalı çalışacak ise; hiç çalışmaması daha evladır. Çalışmayan kod çok rahat tespit edilebilir, ancak zaman zaman hata alabileceğiniz bir kodu nasıl tespit edeceksiniz ?

Verdiğim örneklerden de görebileceğiniz gibi; nil olan bir instance pointer'ı üzerinden dahi metod çağrımlarında bulunabiliyorsunuz. Ayrıca, hafızanın 0xABCFF10 adresini işaret eden A nesnesi Free edildikten sonra, aynı hafıza adresine bir B nesnesi yerleşebilir. Bu durumda A instance pointer'ı üzerinden yapılacak çağrımlar(A pointer'ı nil'e eşitlenmediği için), B nesnesinin metodlarını çağırabilecektir.

Olabilir mi böyle bir şey ? Evet kesinlikle olabilir. O halde neden böyle bir kapıyı açık bırakalım ? Programlar, programcı adı verilen insan'lar tarafından yazılırlar. Ve insanların fıtratı gereği; insanlar hata yapar, beşerdir şaşar. Benim dediğim şey, mümkün mertebe bu hataları engellemeye çalışmak, hatalı kodların çalışmasına mani olmak. Ben bir nesne instance'ını hatalı bir şekilde FreeAndNil yapmamam gereken yerde boşalttı isem bile; Assigned kontrollerini koyduğum için asla öngörülemeyen durumlar ile karşılaşmam. Data'lara zarar vermem, program olmaması gereken istikamette akmaz. Bunun aksi durumlara binlerce örnek verilebilir.

 Instance pointer'ının anlamsız bir yeri göstermesinden mütevellit oluşacak bir hata, bir thread'in prematüre şekilde sonlanmasına neden olur ve çok büyük olasılıkla hatayı dahi göremezsiniz. (AcquireExceptionObject kullanmadı iseniz). Siz zannedersiniz ki thread'iniz sürekli çalışıyor, ama o thread artık yaşamıyor bile.

Programcı'nın bir disipline sahip olması gerektiğine inanırım. Bunun elbette mantıklı ve sayfalar dolusu yazılabilecek nedenleri var. İnsanlar tembelliklerini bir şeylerin ardına gizlememeli.

En mukaddes bilgi, insanın kendisini bilmesidir.

Bir instance pointer'ı nil'e eşitlemeyen arkadaşların, lokal pointer değişkenlerini neden ilk değerleri ile kullanmadığını, lokal sınıf değişkenlerini neden ilgili sınıfı Create etmeden kullanmadıklarını bilmek isterim ? Cevapları duyuyorum ama, yine de bilmek isterim !

Kimsenin şahsına bir kızgınlığım asla söz konusu değil, benim kızdığım nokta, bu denli berrak bir suda; nasıl olur da aynı balığa birimiz hamsi diğerimiz lüfer der ? Ayrıca, kim neye inanmak istiyor ise elbette inanabilir; beni ilgilendirmez de. Tek derdim, doğru bilinen yanlışları düzeltmeye çalışmak. Belki de ben yanlışımdır kim bilir, bunu da bilmek ve kendimi düzeltmek isterim. Her zaman ve herkesten bir şeyler öğrenebilirim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#29
Tuğrul bey, öncelikle sakinleşmenize sevindim. Bence forumlarda "bu nasıl yapılır" diye soru/cevap almaktansa, bu başlıktaki gibi konularda konuşmak daha yararlı. Gelelim niye sizinle aynı şekilde düşünmediğime Smile

Öncelikle kod yazarken dikkat ettiğim yerleri kısaca yazayım. Böylece niye "çalışır kod örneği" vermediğim de anlaşılır:

1. Bir fonksiyon bir iş yapar. Bu yüzden eğer fonksiyon 15-20 satırı geçiyorsa (burada 40 alanı bulunan saçma bir tablodan veri almak gibi işlemlerden bahsetmiyoruz) bir sorun var demektir. Büyük ihtimalle fonksiyon aslında birden fazla iş yapıyordur: Fonksiyonu hemen bölmelisin!

2. "Global variables are evil" (Global değişkenler kötüdür) cümlesine sonuna kadar inanıyorum. Bu yüzden de programlarımda global değişken sayısı çok azdır. 

3. Singleton sınıfları üşenmiyorum ve yazıyorum. (Forumda da singleton patternler konuşulmuştu ve ilgiyle takip etmiştim)

4. try/finally kod bloğunu sürekli kullanıyorum. 

Elbette şu an aklıma gelmeyen ve dikkat ettiğim bir çok yer var. Ama bu 4 tanesi sayesinde FreeAndNil'e neredeyse hiç ihtiyacım olmuyor. Sadece ismailkocacan'ın alıntıladığı durumlarda kullanıyorum: "FreeAndNil özellikle multithreaded veya "yeniden girilir" (reentrant) durumlarında çok faydalıdır, çünkü değişken free edilmeden önce nil'e eşitlenir. Diğer bir deyişle değişken asla geçersiz bir adres (referans) göstermez" (kaba bir tercüme oldu ama ne dediği anlaşılmıştır herhalde). Peki şimdi siz söyleyin, aşağıdaki kodda FreeAndNil benim ne işime yaradı:

var
 L: TStringList;
begin
 L := TStringList.Create;
 try
   // L ile birşey yap
  finally  
    FreeAndNil(L);
  end;
end;

Burada FreeAndNil yapmak sadece gereksiz bir assignment yapmak demek. Üstelik bunu FreeAndNil ile yaparak compiler'in bu gereksiz assignment ile ilgili uyarı vermesini de engelledik. Ne zararı var derseniz, ölçülemeyecek derecede düşük bir assignment gecikmesi var (Pratikte bir zararı yok). Peki bir yararı var mı? Hayır o da yok. Dolayısıyla burada Free veya FreeAndNil kullanmanın tartışmasını yapmak gereksiz. (ben Free tercih ediyorum Big Grin )

Peki global değişkenlerde durum nedir? Dediğim gibi ben minimum sayıda global değişken kullanıyorum (global variables are evil) ve bunların bir çoğu constructor/destructor metodlarında Create/Free ediliyor. Yani nesne genelde ait olduğu sınıfın (veya projenin) yaşam süresi boyunca geçerli oluyor. Bu durum thread değişkenleri için geçerli olmuyor ki bu durumlarda da daha önce de dediğim gibi FreeAndNil kullanıyorum.

Sizin yazdıklarınıza genel olarak katılıyorum, sadece FreeAndNil'i her zaman kullanmanın yanlış olduğunu düşünüyorum. Eğer bir programda, bir nesneyi iki kere Free etmeye çalışıyorsanız kod akışınızda bir sorun vardır. Bu sorunu çözmediğiniz takdirde, FreeAndNil sayesinde invalid pointer operation hatası almayacaksınız belki, ama başka bir hata alacaksınız. FreeAndNil doğru kullanılmadığı takdirde bu hataları yakalamayı zorlaştırıyor. Bu yüzden FreeAndNil'in bilinçli kullanılması gerektiğini düşünüyorum. Ve bilinçli bir programcı, FreeAndNil fonksiyonunu bilmese bile "dangling reference" durumuna düşmemek için gerektiği(!) yerde pointerları nil'e eşitler.

Umarım neden FreeAndNil'e soğuk baktığımı bu sefer anlatabilmişimdir Smile Bu konuyla ilgili daha fazla yazacak bir şeyim de kalmadı Smile 

İyi çalışmalar
Cevapla
#30
Tugrul abi , FreeAndNil kullaniyorum , kullanmaya da devam edecegim. Kullanmaya devam etmemin en buyuk nedeni de senin dedigin gibi programi programcidan korumak icin. 
Daha iyi oldugundan ya da olmasi gereken o oldugu icin degil  kendi hatami tolere etmek icin kullanmaya devam edecegim. 


var
  C : TObject;
begin
  C := TObject.Create;
  ...
  ...
  FreeAndNil( C );
  ...
  ...
  if Assigned( C ) then
    C.Birşey;
end;



Bu kod blogu benim de kullandigim bir blok ama yillardir kullandigimiz icin sanirim bize dogru geliyor oysaki gunluk hayatin akisina ters bir durum mevcut. Kodu bir de soyle yazalim belki daha iyi anlasilir.

begin
  ArabayiCalistir; //C := TObject.Create;
  ArabaninGazinaBas;
  ArabayiAVMyeSur;
  ArabayiDurdur;  //FreeAndNil( C );
  AVMyeGir;
  AVMDeGezDolasDur;
  AVMdenCik;
  Eger ArabaCalisiyorsa  //if Assigned( C ) then
    ArabaninGazinaBas;
end;

Arabanin calismadigini AVM den ciktigimizda zaten biliyoruz , gunluk hayatta boyle bir kontrol yapmiyoruz. AVM ' den cikinca arabayi once calistirip sonra gaza basiyoruz. 
Gunluk hayatta yapmadigimiz bir davranisi kod yazarken yapmis oluyoruz. Bu isin detaylarini artik bir araya geldigimizde konusuruz Tugrul abi Smile



Edit: 

Bu da VCL kodundan alinmis bir bolum. FreeAndNil komutundan dolayi bu kodu yazan arkadas 25. ve 44. satirlarda biraz musrif davranmamis mi ?


function TAmazonQueueService.CreateQueue(const QueueName: string; out QueueURL: string;
                                        const DefaultVisibilityTimeout: Integer;
                                        ResponseInfo: TCloudResponseInfo): Boolean;
var
 Response: TCloudHTTP;
 QueryParams: TStringList;
 xml: string;
 xmlDoc: IXMLDocument;
 ResultNode, QueueNode: IXMLNode;
begin
 QueryParams := BuildQueryParameters('CreateQueue');

 QueryParams.Values['QueueName'] := QueueName;

 if DefaultVisibilityTimeout > -1 then
 begin
   QueryParams.Values['Attribute.1.Name'] := 'VisibilityTimeout';
   QueryParams.Values['Attribute.1.Value'] := IntToStr(DefaultVisibilityTimeout);
 end;

 Response := nil;
 try
   Response := IssueRequest(GetConnectionInfo.QueueURL, QueryParams, ResponseInfo, xml);
   Result := (Response <> nil) and (Response.ResponseCode = 200);
   FreeAndNil(Response);

   if Result and (xml <> EmptyStr) then
   begin
     //Parse XML and get QueueURL value
     xmlDoc := TXMLDocument.Create(nil);
     xmlDoc.LoadFromXML(XML);

     ResultNode := xmlDoc.DocumentElement.ChildNodes.FindNode(NODE_QUEUE_CREATE_RESULT);

     if (ResultNode <> nil) and (ResultNode.HasChildNodes) then
     begin
       QueueNode := ResultNode.ChildNodes.FindNode(NODE_QUEUE);
       if (QueueNode <> nil) and (QueueNode.IsTextElement) then
         QueueURL := QueueNode.Text;
     end;
   end;
 finally
   if Assigned(Response) then
     FreeAndNil(Response);
   FreeAndNil(QueryParams);
 end;
end;
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Nesne Create ve free ile ilgili sorum var. yhackup 10 1.215 03-03-2017, Saat: 11:18
Son Yorum: Tuğrul HELVACI
  Datasetin bağlı olduğu Myquery'i free Etmek (MemoryLeak Tespiti) yhackup 18 8.765 29-11-2016, Saat: 15:38
Son Yorum: yhackup
  Create Edilen Clasları bulup kontrollu free etmek yhackup 2 1.491 18-09-2016, Saat: 11:57
Son Yorum: yhackup



Konuyu Okuyanlar: 2 Ziyaretçi