durum bilgisi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
birisi
Üye
Mesajlar: 17
Kayıt: 12 Haz 2003 08:46
Konum: istanbul
İletişim:

durum bilgisi

Mesaj gönderen birisi »

arkadaşlar kolay gelsin.

yazdığım program uzak bir veritabanına (ORACLE) bağlı olarak çalışıyor. istenen şu: ağ uzerinde programdan birden fazla kopyası olacak. program sürekli açık olacak ve o an bağlantının olup olmadığı bilgisinin ekranın altında görünmesi isteniyor. timer kullanarak belirli aralıklarla bağlantının olup olmadığını anlıyabiliyorum ama timer çalıştığı anda 2-3 sn için program tepki vermez hale geliyor. tabiki bu durumda bilgi girişi askıya alınmış oluyor. nasıl bişiler yapmalıyımki bu tarama işlemini kullanıcıya hisseettirmiyeyim. thread kullanmayı denedim ama thread içinde adoconnection'a müdahale etmeme müsade etmedi. yanlış bişilermi yapıyorum :cry: ?
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Ado 'u hic kullanmadim fakat benzer durum benim de basima geldi. Program arka planda merkeze baglanip yeni versiyon var mi diye kontrol etmesi gerekiyordu.

Thread icinde olsa bile eger o sirada kullanici lokalde veritabani uzerinde islem yapiyor is baglanti isi sonuclanana kadar bu islemler askiya aliniyordu. Farkli database baglantilarinin es zamanli olarak birbirine engel olmadan calismalari icin Session kullanmak gerekiyor (mus).

Gerci benim iste o da sorun cikartinca Update isleri de zaten yeterince kalabalik isler oldugu icin butun bu update islerini yapacak ayri bir exe yapip duzenli araliklara gizli bir sekilde onu calistirarak problemi astim.

Kolay gelsin....
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

benim de aklıma ilk thread geldi. Olayı ayrı bir thread olarak yaparsan, mevcut işleri engellememiş olursun. Ancak Fahrettin abinin dediği gibi bir durum ortaya çıkar mı bilmiyorum. Bu tip işlemler için genelde ayrı bir thread kullanılıyor.

Ayrıca bu tip durumlarda arada Application.ProcessMessage komutunu vermek işe yarayabiliyor.

Kolay gelsin.
Kullanıcı avatarı
birisi
Üye
Mesajlar: 17
Kayıt: 12 Haz 2003 08:46
Konum: istanbul
İletişim:

Mesaj gönderen birisi »

dediğim gibi thread kullanmaya çalıştım ama thread içerisinde

form1.adoconnection1.connected:=true

gibi bir ifade kullanamıyorum kullanmak istediğimde bana utanmadan

CoInitialize has not been called

hatası veriyo. bu hatayı gidermenin bir yolu varmı. nede bu hatayı veriyordur. acaba diyorum ayrı bir exe bu işi yapıp dde ile ana programa atsa, gereksiz yere karmaşıklaştırmış mı olurum (yazarken bile karıştı :D )
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

birisi yazdı: CoInitialize has not been called

hatası veriyo.
Merhaba,

ADO kullanırken CoInitialize ve CoUninitialize'yi mutlaka kullanmak zorundasın. unitin en altına aşağıdaki kodu ekle.

initialization
CoInitialize(nil);
finalization
CoUninitialize;

NOT : bu arada piknik olayıyla ilgili birşey dememişsin. Tarih nasıl, gelebilir misin? Hatırladığım kadarıyla kaçırdığı için en çok üzülenlerden birisi sendin :wink:

Kolay gelsin.
Kullanıcı avatarı
birisi
Üye
Mesajlar: 17
Kayıt: 12 Haz 2003 08:46
Konum: istanbul
İletişim:

Mesaj gönderen birisi »

piknik konusunda bişiler yazdım geciktiği için özür dilerim.

bu kodlar nedir. neden kullanmak geriyor anlıyamadım. ve

CoInitialize(nil);
CoUninitialize;

bu iki satırın tanımsız olduğunu söylüyor. nedendir
Cevapla