Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Delphi7 Derleme seçenkleri  (Okunma sayısı 1517 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı aytekin

  • Kıdemli Üye
  • *****
  • İleti: 302
  • Rep: +0/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #15 : 29 Temmuz 2010 13:49:32 »
DLLRegister('c:\windows\system32\Bilmemne.DLL');   şimdi abi bu kodu yazdığpım zaman gerkli dosyau hem system32 ye atıyor hemde register e kayıt yapıyormu ??

Çevrimdışı thelvaci

  • Kıdemli Üye
  • *****
  • İleti: 150
  • Rep: +2/-0
  • Cinsiyet: Bay
    • Delphi Programming
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #16 : 29 Temmuz 2010 13:51:24 »
System32 altına atmıyor tabii ki :) Onu da CopyFile ile sen yapabilirsin. Bu metoda DLL'in nerede ise oranın yol tanımını veriyorsun.
« Son Düzenleme: 29 Temmuz 2010 13:54:58 by thelvaci »

Çevrimdışı thelvaci

  • Kıdemli Üye
  • *****
  • İleti: 150
  • Rep: +2/-0
  • Cinsiyet: Bay
    • Delphi Programming
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #17 : 29 Temmuz 2010 13:58:23 »
 Tabi metodun çalışıp çalışmadığını test edebilmen için öncelikle regsvr32 ile kayıt etti isen ilgili makinada DLL'ini unregister etmelisin ki, metodun çalıştığına emin olasın. Nasıl unregister edeceğim dersen eğer; regsvr32 'c:\windows\system32\SMSMakinasi.dll' -u yazabilirsin; eğer yanlış hatırlamıyorsam. Ardından da kodun içine koyacağın DLLRegister('c:\windows\system32\SMSMakinasi.dll') metodunun çalışıp çalışmadığını gözlemleyebilirsin.

Çevrimdışı aytekin

  • Kıdemli Üye
  • *****
  • İleti: 302
  • Rep: +0/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #18 : 29 Temmuz 2010 14:02:18 »
şimdi hocam tamam orasını anladım şimdi şu kod ile :
DLLRegister('c:\windows\system32\SMSMakinesi.dll');     ilgili dll dosyasını register kayıt ediyor buraya kadar doğrumu anladım.Şimdi birde bize kayıt işleminden önce o dosyasyı system 32ye atacak bir yol lazım mesela dialog componentleri ile bir yerden biyere atamazmıyız.???

Çevrimdışı redcoder

  • Kıdemli Üye
  • *****
  • İleti: 253
  • Rep: +2/-0
  • Coder
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #19 : 29 Temmuz 2010 14:06:34 »
Copyfile() Fonksiyonu işini görür.
Application.MessageBox('Zor yapılabilir?','Imkansız sadece zaman alır',0+32+0);

Çevrimdışı aytekin

  • Kıdemli Üye
  • *****
  • İleti: 302
  • Rep: +0/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #20 : 29 Temmuz 2010 14:08:15 »
hocam biz kodu pogramda hangi forma ve nasıl yazmalıyız.? Mesela bu hatayı programda açlış sayfasında veriyodu açılış sayfasının 5 sn bekleme süresi var bu sırada açılış sayfasının form create olayına yazsak olur mu ???

Çevrimdışı redcoder

  • Kıdemli Üye
  • *****
  • İleti: 253
  • Rep: +2/-0
  • Coder
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #21 : 29 Temmuz 2010 14:15:50 »
 thelvaci hocam izninize sığınaraktan;
Kardeşim şimdi formun create yordamında Bu dll fonksiyonunu kullandı isen elbette kopyalama işinide Create yordamına yazacaksın. Kullanmadın isen Show metoduna eklemen senin program takibin açısından daha okunaklı ve yararlı olacağı görüşündeyim. Iyi çalısmalar
Application.MessageBox('Zor yapılabilir?','Imkansız sadece zaman alır',0+32+0);

Çevrimdışı aytekin

  • Kıdemli Üye
  • *****
  • İleti: 302
  • Rep: +0/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #22 : 29 Temmuz 2010 14:28:56 »
tamam hocam tşk ederim...

Çevrimdışı thelvaci

  • Kıdemli Üye
  • *****
  • İleti: 150
  • Rep: +2/-0
  • Cinsiyet: Bay
    • Delphi Programming
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #23 : 29 Temmuz 2010 21:35:18 »
System32 altına atmıyor tabii ki :) Onu da CopyFile ile sen yapabilirsin. Bu metoda DLL'in nerede ise oranın yol tanımını veriyorsun.

 Sana yazdığımız yorumları biraz daha dikkatle okuyabilirsen, soruların ve sorunların azalacak sanki güzel kardeşim. ;) Bak CopyFile metodunu kaç mesaj önce önermişim sana ;)

Çevrimdışı aytekin

  • Kıdemli Üye
  • *****
  • İleti: 302
  • Rep: +0/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #24 : 29 Temmuz 2010 21:36:39 »
tamam da abicim sizin bana yaptığınız yardımlar ismi lazım değil bazılarına batmaya başladı..

Çevrimdışı thelvaci

  • Kıdemli Üye
  • *****
  • İleti: 150
  • Rep: +2/-0
  • Cinsiyet: Bay
    • Delphi Programming
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #25 : 29 Temmuz 2010 21:59:33 »
tamam da abicim sizin bana yaptığınız yardımlar ismi lazım değil bazılarına batmaya başladı..

 Yok canım öyle şey mi olur. Sen yanlış anlamışsındır. Burada herkes yardımlaşmayı birinci planda tutuyor ve eminimki herkes birbirine sadece allah rızası için yardım ediyor. Allah'ın rızasından gayri önemli de başka bir şey yok.

Çevrimdışı aligel54

  • Kıdemli Üye
  • *****
  • İleti: 478
  • Rep: +1/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #26 : 30 Temmuz 2010 10:47:11 »

Kimseye bir şey batmaz merak etme...
Burada sadece soru soran değil diğer arkadaşlar da bir şey öğreniyor.
Her ne kadar iyi programcı da olsak hatta birine yardım ederken bile bir şeyler öğrenebiliyoruz.
Bu sebeple en başta Tuğrul hocama ikinci olarak da Aytekin kardeşime teşekkür etmek isterim.

Tuğrul hocamın Dll leri program içinden register etme örneğini yeni öğrendim. Ama Aytekin kardeşimiz olmasaydı nasıl öğrenecektim? Artık sizler sayesinde programların için gerekli dll leri dışarıdan register etmek yerine program içinden ya da kurulumda yapabilirim.


Gelelim benim takıldığım noktaya...
Soru soruyu doğururmuş.

Birinci sorunum; bu activeX dll leri daha önceden  kayıtlı mı değil mi? bunu nasıl bulabilirim.
Bu dll leri program her çalıştığında tekrar kayıt etmek sorun oluşturabilir gibi geliyor.
Program açılırken kontrol etsin, kayıt edilmişse işlem yapmasın, kayıt edilmemişse kayıt edilsin.
Bunu nasıl yapabilirim.

Ya da program her çalıştığında Unregister edip tekrar Register etmek ilerde sorun oluşturur mu?
Bu kayıt esnasında windows yetkilerine her seferinde takılmak istemem açıkçası

İkinci sorunm ise; Diyelim ki bu ActiveX dll i kayıt edilmiş. Fakat eski bir versiyonu kayıt edilmişse ve programın çalışabilmesi için yeni versiyonun kayıt edilmesi gerektiğinde ne yapabilirim
Yani program içinden versiyonun eski olup olmadığını kontrol edip eskiyse Unregister edip yenisini Register etme işlemini nasıl yaparım...

Tuğrul hocam bizden çekeceğin var  :::)




Çevrimdışı thelvaci

  • Kıdemli Üye
  • *****
  • İleti: 150
  • Rep: +2/-0
  • Cinsiyet: Bay
    • Delphi Programming
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #27 : 30 Temmuz 2010 13:36:38 »
 Merhabalar, DLL'in sürekli kayıt edilmesi bir sorun oluşturmaz sanırım ama illa da kayıtlı mı değil mi öğrenmemiz icap ediyor ise şu an aklıma gelen ve biraz amelece bir yöntem olabileceğinden ötürü özrünüze sığınacağım GetProcAddress metodu.

 DLL'imizi LoadLibrary ile yükleriz ve içindeki bir metodu GetProcAddress ile alırız, ardından bir try/except bloğunda bu metodu çağırmaya çalışırız. DLL register edilmemiş ise büyük ihtimalle bir exception oluşacaktır(Class not registered gibi). Bizde exception kısmında DLL'imizi register ederiz :)

İkinci sorunuzun ise Win32 dll'leri için kolay bir yolu yok sanırım. Win32 DLL'lerinin sisteme kayıt edilmelerinde karşılaşılan sorunlar nedeni ile "DLL Hell" tabiri epey bir popüler olmuştur zamanında. Ancak .Net assembly'lerinde bu sorun aşılmış durumda. DLL'lerin versiyonları birbirinden farklı ise son register işlemi bir öncekinin üstüne yazmıyor.

Çevrimdışı aligel54

  • Kıdemli Üye
  • *****
  • İleti: 478
  • Rep: +1/-0
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #28 : 30 Temmuz 2010 14:07:21 »
Evet ilk dediğiniz olabilir.

Try .. Except bloğu içinde kullandığım ActiveX componentinin Versiyon numarasını isteyebilirim.
(Kullandığım dll içinde böyle bir fonksiyon var.)

Hata verirse dll hiç kaydedilmemiştir diye en güncelini Register ederim.

Yok versiyon numarasını verirse ve eski bir versiyonsa ilk olarak Unregister edip sonra da yenisini register edebilirim.

Burada da şöyle bir sorun olabilir. O dll i kullanan başka bir program olduğunda REgister, Unregister işlemi yapılamıyor.

Peki Register ya da UnRegister işleminin başarılı olup olmadığını örnek verdiğiniz procedure ler yardımıyla nasıl öğrenebilirim?


 

Çevrimdışı thelvaci

  • Kıdemli Üye
  • *****
  • İleti: 150
  • Rep: +2/-0
  • Cinsiyet: Bay
    • Delphi Programming
Ynt: Delphi7 Derleme seçenkleri
« Yanıtla #29 : 30 Temmuz 2010 14:11:27 »
DllRegisterServer'ın help dökümanında geri dönüş değerleri aşağıdaki gibi belirtilmiş ;)

Value  Meaning 
S_OK
 The registry entries were created successfully.
 
E_FAIL
 The registry entries were not completed.