VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen bobasturk »

Merhaba,

Forumda araştırdım ama beceremedim. veritabanına ağdan erişiliyor ve database veritabanı yolunu text dosyadan alıyor. Buraya kadar sorunum yok fakat kullanıcılar bilgisayarları bazen internete bağlıyorlar ve ip adreslerini ağ ip adresine döndürmeyi unutuyorlar, haliyle programı çalıştırmaya kalkınca bağlanamama sorunu oluyor. gelen hata mesajınida anlamıyorlar ve programı üstü üste çalıştırıyorlar.

Forumda bulduklarım doğrultusunda mesajı verdirdim fakat showmessage den sonra programın arka planda çalıştırmasını durduramadım. kodlarım şöyle;

Kod: Tümünü seç

procedure TSistemDM.DataModuleCreate(Sender: TObject);
var
  f:textfile;
  s:string;
  begin
  try
    assignfile(f,extractfilepath(paramstr(0))+'\datayolu.txt');
    reset(f);
    readln(f,s);
    closefile(f);
    sistemibdbase.Close;
    sistemibdbase.databasename:=s;
    sistemibdbase.Open;
  except
    showmessage('Veritabanına Bağlanamadı. Lütfen IP Adresini Kontrol Ediniz.');
    //??????????
  end;
end;
burada uyarıyı veriyor fakat program taskmanager de çalışmaya devam ediyor. Application.terminate; kodu ise hata veriyor, ne önerirsiniz.

saygı ile kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen vkamadan »

Merhaba ,
TApplication sınıfı "Forms" unitinde bulunur , uses a forms eklerseniz çalışacaktır, bir diğer seçenek ise System unitinde yer alan "Halt" metodunu kullanmaktır, Terminate den farkı işletim sistemine program kapatılırken bir Exit kodu gönderebilmesidir.;
kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Re: VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen bobasturk »

ustam teşekkür ederim, eklemediğim tek o unit kalmıştı ekleyince oldu. application.terminate; kodu çalıştı fakat görev yöneticisi işlemler sekmesinde halen daha program çalışmaya devam ediyordu. Halt; komutunu ekleyince oradan da program kapandı ve istediğim oldu.

Birde bağlanmaya çalışırken baya bi zaman geçiyor. bu geçen sürede 'Bağlanıyor Lütfen bekleyiniz.' gibi bir mesaj verdirmek ve bağlanınca veya bağlanamayınca bu mesajın kapanması. nasıl olur acaba?

teşekkür ve saygı ile.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen Ertugrul »

splash form diye arama yapin. splash formuna xconnection.connect; demeden once show demeniz gerekli.
Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 01:20

Re: VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen Jire »

Programın ardı ardına çalışmasını önlemek için Mutex ve Procecess Kill sistemi oluştur demek istediğim
Eğer kişi programı ikinci defa açarsa Mutex araya girecek ve soru soracak "Program hâla açık, eskisini kapatmak istermisiniz?" = mrYes ise
Process Kill tarzı bir prosedür ile arkaplandaki programını kapatırsın ve yenisini açarsın eğer kişi hayır derse 2. açılmak istenen programım App.Terminate ile kapatırsın.

Kod: Tümünü seç

if (messagebox(handle,pchar(''),pchar(caption),mb_yesno)=mrYes) then
begin
//ProcessKill('deneme.exe')
//ProcessKill(ProcessID) -- 2 tane deneme.exe açık olduğunu var sayarsak...
end
else
begin
showmessage('diğer program kapanmadan bunu açmanız mümkün değil');
application.terminate;
end;
Birde bağlanmaya çalışırken baya bi zaman geçiyor. bu geçen sürede 'Bağlanıyor Lütfen bekleyiniz.' gibi bir mesaj verdirmek ve bağlanınca veya bağlanamayınca bu mesajın kapanması. nasıl olur acaba?
bunun için ise kullandığın bileşeni bilmediğim için tam cevap veremeyeceğim.

Kod: Tümünü seç

while Client.Connected=True do
begin
application.processmessages;
label1.text := 'bağlanıyor lütfen bekleyiniz...';
end;
//yani Client bağlanana kadar label.text'e bağlanıyor yaz ve processmessages ile programın takılmasını önlüyor.
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen Ertugrul »

Jire yazdı:

Kod: Tümünü seç

while Client.Connected=True do
begin
application.processmessages;
label1.text := 'bağlanıyor lütfen bekleyiniz...';
end;
Bu sekilde olmaz. Veritabaninda XConnection.Connect; komutu verildiginde bir sonraki satira baglanana ya da baglanti basarisiz olana kadar atlamaz. Atladiktan sonra ise bir daha hayatta cikmaz cunki Connected surekli True gelecek ve sonsuz dongu olacaktir.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Re: VT ye bağlanamıyorsa mesaj ver ve prg.kapat

Mesaj gönderen bobasturk »

verdiğiniz değerli bilgiler için müteşkkirim.

Programım timer e bağlı bir splash form ile açılıyor küçük bir swf geliyor splash formla birlikte. vt ye bağlantım ise ilk mesajımda verdiğim kodlarla oluyor. yani sistemmodul ümde database var ve yonumu text dosyadan alıyor oncreat olunca. delphi7 ve fb 2.1 kullanıyorum ve client-server sisteminde oluşturmadım. her bilgisayar aynı exe yi kullanıyor. vt sadece bir bilgisayarda bulunuyor. dışa kapalı bir iç ağ üzerinde yaklaşık on bilgisayarda program kullanılmakta.

mutex olayını uyguladım tek farkı sadece program çalışıyor mesajı verdiriyorum. programda ilk açılan splash form fakat ondan önce sistemodulüm creat oluyor. bu sebeple modulün oncreat olayında database yolunu bulmaya çalışırken ekranda hiçbir hareket olmayacağından bu geçen sürede progresbar veya animasyon gibi bişiler gösterip kullanıcının yanılıp programı ikinci kez çalıştırmaya uğraşmasını (sadece boşa hareketi önlemek amacıyla çünkü mutex sayesinde uyarı alacak) önlemek ve görsellik vermek istedim.

tabi önce splash formu gösterip bu form üzerinde label e bişiler yazmakta olabilir. sanki benim programımda tasarım hatası var gibi. önce modulün creat olması vt ye bağlanmaya çalışması, sonra splash formun creat olması.

ertuğrul ustam senin splash uyarına geldim heralde.

yardımlarınız için şimdiden teşekkür ve saygılarımla. kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla