Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Kendi oluşturduğumuz nesnelerin yok edilme kuralları
#1
Soruyu sorma amacın aşağıdaki kod için değil genel olarak kendi oluşturduğunuz nesneler için geçerli.

aşağıdaki procedure ile sorgular oluşturarak kullanıyorum.

bir hata oluştuğunda veya kodlar düzgün çalıştı işimiz bittiğinde 

 if svk_sorgu.Active then svk_sorgu.Free;
 

şeklin demi oluşan sorgu yu yok etmeli yoksa svk_sorgu.Free; olarak mı

program hata verdi kırıldı svk_sorgu.Free; kullanmak access hatasına düşürür mü.


Procedure sevk_data_al;
var mesaj:string;
begin
  svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
       svk_sorgu.Connection := data_form.Sunucu_baglan;
       svk_sorgu.SQL.Clear;
       svk_sorgu.sql.Add('SELECT * FROM Sevk');
       svk_sorgu.ExecSQL;
                  except  on E: Exception do
                   begin
                    if svk_sorgu.Active then svk_sorgu.Free;
                    mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
                    Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
                    exit;
                    end;
   end;


end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
(14-08-2018, Saat: 12:58)cinarbil Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Soruyu sorma amacın aşağıdaki kod için değil genel olarak kendi oluşturduğunuz nesneler için geçerli.

aşağıdaki procedure ile sorgular oluşturarak kullanıyorum.

bir hata oluştuğunda veya kodlar düzgün çalıştı işimiz bittiğinde 

 if svk_sorgu.Active then svk_sorgu.Free;
 

şeklin demi oluşan sorgu yu yok etmeli yoksa svk_sorgu.Free; olarak mı

program hata verdi kırıldı svk_sorgu.Free; kullanmak access hatasına düşürür mü.


Procedure sevk_data_al;
var mesaj:string;
begin
  svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
       svk_sorgu.Connection := data_form.Sunucu_baglan;
       svk_sorgu.SQL.Clear;
       svk_sorgu.sql.Add('SELECT * FROM Sevk');
       svk_sorgu.ExecSQL;
                  except  on E: Exception do
                   begin
                    if svk_sorgu.Active then svk_sorgu.Free;
                    mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
                    Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
                    exit;
                    end;
   end;


end;

Procedure sevk_data_al;
var 
   mesaj:string;
begin
   svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
      try
         svk_sorgu.Connection := data_form.Sunucu_baglan;
         svk_sorgu.SQL.Clear;
         svk_sorgu.sql.Add('SELECT * FROM Sevk');
         svk_sorgu.ExecSQL;
      except  
         on E: Exception do
         begin
            mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
            Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
            exit;
         end;
      end;
   finally
      FreeAndNil(svk_sorgu);
   end;
end;
Cevapla
#3
(14-08-2018, Saat: 13:15)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(14-08-2018, Saat: 12:58)cinarbil Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Soruyu sorma amacın aşağıdaki kod için değil genel olarak kendi oluşturduğunuz nesneler için geçerli.

aşağıdaki procedure ile sorgular oluşturarak kullanıyorum.

bir hata oluştuğunda veya kodlar düzgün çalıştı işimiz bittiğinde 

 if svk_sorgu.Active then svk_sorgu.Free;
 

şeklin demi oluşan sorgu yu yok etmeli yoksa svk_sorgu.Free; olarak mı

program hata verdi kırıldı svk_sorgu.Free; kullanmak access hatasına düşürür mü.


Procedure sevk_data_al;
var mesaj:string;
begin
  svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
       svk_sorgu.Connection := data_form.Sunucu_baglan;
       svk_sorgu.SQL.Clear;
       svk_sorgu.sql.Add('SELECT * FROM Sevk');
       svk_sorgu.ExecSQL;
                  except  on E: Exception do
                   begin
                    if svk_sorgu.Active then svk_sorgu.Free;
                    mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
                    Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
                    exit;
                    end;
   end;


end;

Procedure sevk_data_al;
var 
   mesaj:string;
begin
   svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
      try
         svk_sorgu.Connection := data_form.Sunucu_baglan;
         svk_sorgu.SQL.Clear;
         svk_sorgu.sql.Add('SELECT * FROM Sevk');
         svk_sorgu.ExecSQL;
      except  
         on E: Exception do
         begin
            mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
            Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
            exit;
         end;
      end;
   finally
      FreeAndNil(svk_sorgu);
   end;
end;


if assigned(svk_sorgu) then
FreeAndNil(svk_sorgu);

(14-08-2018, Saat: 12:58)cinarbil Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Soruyu sorma amacın aşağıdaki kod için değil genel olarak kendi oluşturduğunuz nesneler için geçerli.

aşağıdaki procedure ile sorgular oluşturarak kullanıyorum.

bir hata oluştuğunda veya kodlar düzgün çalıştı işimiz bittiğinde 

 if svk_sorgu.Active then svk_sorgu.Free;
 

şeklin demi oluşan sorgu yu yok etmeli yoksa svk_sorgu.Free; olarak mı

program hata verdi kırıldı svk_sorgu.Free; kullanmak access hatasına düşürür mü.


Procedure sevk_data_al;
var mesaj:string;
begin
  svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
       svk_sorgu.Connection := data_form.Sunucu_baglan;
       svk_sorgu.SQL.Clear;
       svk_sorgu.sql.Add('SELECT * FROM Sevk');
       svk_sorgu.ExecSQL;
                  except  on E: Exception do
                   begin
                    if svk_sorgu.Active then svk_sorgu.Free;
                    mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
                    Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
                    exit;
                    end;
   end;


end;



Bu kod fazla hatalı, try except  te nesne free edilmez , ya hata oluşmaz ise ? Ayrıca ya Active olmadan hata verirse 

Mantık bu şekilde olmalı
  
  MyClass := TComponent.Create(Self);
  try
    try
       //db işleri
    except
      on e: exception do
      begin
         // hata mesajları
      end;
    end;
  finally
    if Assigned(MyClass) then
      MyClass.Free;
  end;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#4
(14-08-2018, Saat: 13:18)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(14-08-2018, Saat: 13:15)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Procedure sevk_data_al;
var 
   mesaj:string;
begin
   svk_sorgu:= TADOQuery.Create(nil); // sorgu için oluştur
   try
      try
         svk_sorgu.Connection := data_form.Sunucu_baglan;
         svk_sorgu.SQL.Clear;
         svk_sorgu.sql.Add('SELECT * FROM Sevk');
         svk_sorgu.ExecSQL;
      except  
         on E: Exception do
         begin
            mesaj:='Sevk Sorgu başarısız. Hata mesajı: '+e.Message;
            Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
            exit;
         end;
      end;
   finally
      FreeAndNil(svk_sorgu);
   end;
end;


if assigned(svk_sorgu) then
FreeAndNil(svk_sorgu);

@yhackup selam,

try'ın üzerinde nesne create edilirse (yukarıdaki gibi), finally'nin içinde ayrıca bir Assigned kontrolüne gerek olmaz.
Cevapla
#5
(14-08-2018, Saat: 13:40)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(14-08-2018, Saat: 13:18)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.if assigned(svk_sorgu) then
FreeAndNil(svk_sorgu);

@yhackup selam,

try'ın üzerinde nesne create edilirse (yukarıdaki gibi), finally'nin içinde ayrıca bir Assigned kontrolüne gerek olmaz.

Ne oluuur ne olmaz , ben eşşeğimi sağlam kazığa bağlayayımda.. belki yanlışlıkla try bloğu içerisinde yaptığımız bir işlem ilgili nesneyi free edecektir.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#6
(14-08-2018, Saat: 15:38)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(14-08-2018, Saat: 13:40)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@yhackup selam,

try'ın üzerinde nesne create edilirse (yukarıdaki gibi), finally'nin içinde ayrıca bir Assigned kontrolüne gerek olmaz.

Ne oluuur ne olmaz , ben eşşeğimi sağlam kazığa bağlayayımda.. belki yanlışlıkla try bloğu içerisinde yaptığımız bir işlem ilgili nesneyi free edecektir.

Bilgilendirme için teşekkür ederim Allah c.c ikinizdende razı olsun.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Formun ve içerisindeki nesnelerin ölçeklendirmesi Abdullah ILGAZ 5 848 15-01-2019, Saat: 23:27
Son Yorum: CesuR



Konuyu Okuyanlar: 1 Ziyaretçi