Delphi çalışma anı exe durdurma hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 26 Oca 2015 12:04

Merhaba Arkadaşlar

Delphide yaptığım uygulama da şöyle bir hata almaktayım
" Proje.exe çalışmayı durdurdu."
Uygulama sağlıklı bir şekilde açılıyor.Daha sonra işlem yaparken bu hatayı veriyor.Uygulama Windows Xp sp3 Borland Delphi 7 de yazıldı ve orada herhangi bir hata vermemektedir.Ancak uygulamayı Windows 7 bilgisayara geçirince bu hatayı vermektedir.(Windows Register yapıldı deplhi için) Kodsal bir sorun olduğunu düşünmüyorum. İzinlerle de ilgili de değil tamamen kontrol ettim.

Daha sonra bir tane windows 7 bilgisayara delphi 7 kurdum uygulamayı derledim.Kurcalamalardan sonra nihayet uygulama bu bilgisayarda sağlıklı bir şekilde çalıştı.Ancak uygulamayı başka bir windows 7 ve windows 8 pclerine attım test etmek için.Ancak buralarda çalışmayı durdurdu hatası verdi.Yaptığım işlem ise döküman taramak.Tarayıcı ile dökümanları tarıyor ve belirttiğim pathe kaydediyor ancak tam dökümanları ekrana gösterecek çalışmayı durdurdu hatası veriyor.(Bu işlemler kendi delphi kurulu olan windows 7 pc'm de ve xp de çalışıyor)

bilgisi olan arkadaşlar yadımcı olursa sevinirim.

Senat0r
Üye
Mesajlar: 80
Kayıt: 13 Tem 2014 08:30
Konum: Antalya

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Senat0r » 26 Oca 2015 10:06

Tahminim kütüphanelerde sorun olabilir. Release yaptiysan tam yüklenmemiş olabilir veri tabanında alanlarla ilgili sorunlatdada bu hatayi verebiliyor bunlar sadece birer varsayim
gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...

Kod: Tümünü seç

Delete from hayat where cins="çıkarcılar"

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 27 Oca 2015 08:32

Hocam veritabanı kullanmıyorum.Sadece dokuman tarayıcının dll leri var onları import ediyorum uygulamaya.
Sade bir ekran zaten dokümanı tara ekrana göster.Ama tuhaf olan bu uygulamanın delphi kurulu olan bilgisayarda çalışması diğerlerinde exe çalışma hatasına düşmesi
3-4 gündür uğraşıyorum denemediğim yöntem kalmadı.

Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen warder » 27 Oca 2015 10:17

Programınızın düzgün olduğuna eminseniz konuya windows cephesinden bakın.
Windows giderek daha sertleşiyor.
Kullanıcı hakları, uygulama sınırları, yetkiler... Aştığına karar verdiği anda kapatıyordur.
Import ettiğiniz tarayıcı dll leri eskilerde kalmış ve kernel de başvurduğu adreslerin yerinde yeller esiyor olabilir.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 27 Oca 2015 01:54

Hocam dll ler eğer sıkıntı olacaksa normalde de çalışmaz.Yani delphi kurulu bilgisayayarda.
Şöyle anlatayım, işlem gerçekleşiyor, dokümanlar taranıyor ve istediğim pathe atıyor.Sorun bundan sonra tam başlıyor.Aniden uygulama Proje.exe çalışmayı durdurdu hatası veriyor.Bide ben bu taraycıcı dll lerini Tbl formatına çevirip öyle aldım.Ne yapacağımı şaşırdım valla.

Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen warder » 27 Oca 2015 02:58

-Programınızın hata akışını dosyaya yazacağınız bir fonksiyon planlayın.
-Ana formunuzun OnCreate si içinde
Application->OnException = LogFonksiyonunuz;
tanımlamasını yapın,
-Özellikle hata üreten kodlarınızı try __finally bloğunda işleyin.
catch kısmı kullanmayın.. o kısım zaten log fonksiyonunuza gönderilecek..
Dolayısıyla dosyaya yazılacağından hataları daha sağlıklı takip etme şansı bulursunuz.
Windows hata bile vermeden program sonlandırıyorsa, programınız büyük yanlışlıklar yapıyordur.
Benim neredeyse her programımda kullandığım demirbaştır hata logları..

Kod: Tümünü seç

void __fastcall TFrmList::Hataci(TObject* Sender, Exception* Hata)

{
	TDateTime thTarih = Now();
	String sRapor = Format(L"Birim:%s-%s \tTip:%s \t Detay:%s", ARRAYOFCONST((thTarih.FormatString("dd.mm.yyyy hh:nn:ss"), this->UnitName(), Hata->ClassName(), Hata->Message)));
	ofstream out(L".\\hatalog.txt", ios::app);
	out << AnsiString(sRapor).c_str() << std::endl;// "\r\n";
}
void __fastcall TFrmList::FormCreate(TObject *Sender)
{
	Application->OnException = Hataci;
       ......

Aynı dosya (hatalog.txt) birden fazla formda kullanılmıyorsa Birim kısmındaki ikinci %s nin anlamı kalmıyor. (this->UnitName().. bununla birlikte..)

Çok eskiden bir programda tarayıcı kullanmıştım.
Kodak kütüphanesi kullanıyordum. Yazıcı çıktılarında gerek kalmadığından zamanla kaldırdım gitti..
Şimdi sizin için baktım.. eski kodlar duruyor ama kullandığım kütüphane yok malesef.
Basit te bir kullanımı var..
İlginizi çekerse sadece kullandığım kısmı paylaşabilirim. Çünkü kütüphaneleri bulamadım.
Hatırladığım Windows ME ye kadardı sanırım.. windows ile birlikte geliyordu. Sonra kaldırdılar.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 30 Oca 2015 08:51

Arkadaşlar şimdi hata şuradan kaynaklanıyor.

C# Com dll in kaynak kodları elimde ona eklemeler yaparak uygulamanın hangi satırda bu hataya düştüğünü gördüm.
Şimdi sorun tarama yaparken, tarama ile ekrana görüntünün gelmesinin senkron çalışabilmesi için bir delegate kullanılmış.
Bu delegate ile bir tane event üretilmiş ve bu event ile okunan dökümanın ön arka yüz görüntü pathleri atılmış kod şöyle.

Kod: Tümünü seç

 
    [ComVisible(false)]
    public delegate void DocumentEvent(object o,DocumentArgs e);

   
    [Guid("CD71C405-E23A-42F6-B1CF-E15C1F415C5A")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    [ComVisible(true)]

    public interface IOperations
    {
         
        void DocumentReceived(object o, DocumentArgs e);
    }

   
    [Guid("8C6DAD17-0612-4166-AD35-3A55DDEAF62E")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]
    [ComSourceInterfaces(typeof(IOperations))]

    public class Operations:MarshalByRefObject
    {
        #region Methods

        /// <summary>
        /// OnDocumentReceived
        /// </summary>
        public  DocumentEvent DocumentReceived;
  
     public void ExecDocumentReceived(object o, DocumentArgs e)
        {
           
            if (DocumentReceived != null)
            {              
                DocumentReceived(o,e);
                
            }
        }
Kodu anlatayım Com dll bir tane döküman taradıktan sonra image pathlerini DocumentArgs objesine atmakta ve yukarıdaki ExecDocumentReceived fonksiyonunu öağırmakta.Burada ise en yukarıda oluşturulan delegate ten türeyen eventa (DocumentReceived(o,e)) atamaktadır. Bu kod satırına gelince exe çalışma durdurma hatası vermekte diğer bilgisayarlarda. Sorun tam olarak bu. Bi çok kaynağa baktım delegate kullanımı ile ilgili belki yanlış kullanılmıştır diye ama herkes aynı yapıda oluşturmuş.

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 30 Oca 2015 10:07

Arkadaşlar hatayı yakaladım.
Dll e try-catch atınca şöyle bir hata yazdı

Object does not match target type (Nesne hedef türüyle eşleşmiyor.)

Bu hatayı veriyor.Ancak komik olan uygulamanın kendi pc ' im de çalışıyor olması ve diğer pclerde bu hatayı vermesi.

Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen warder » 30 Oca 2015 05:48

Aralarında astlık üstlük ilişkisi olmayan sınıflar birbirine dönüştürülmeye kalkınca genelde oluşan bir hata...
Sınıfların uyuşmaması bir yana ihtiyaç duyulan veri her ikisinde de varsa, diğer benzeşmeyen kısımlar kullanılmayacaksa ve hatayı bertaraf edince her şey yoluna girecekse
reinterpret_cast
kullanın.. zorla çevirir, hata vermez..
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 02 Şub 2015 08:41

Hocam bu reinterpret_cast kullanımı hakkında yukarıdaki kod üzerinde veya küçük bi örnek yazabilir misin

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 02 Şub 2015 09:14

Arkadaşlar hata tam olarak şu

System.Reflection.TargetException: Object does not match target type.
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
at ICSCanonSDK.IOperations.DocumentReceived(Object o, DocumentArgs e)
at ICSCanonSDK.Operations.ExecDocumentReceived(Object o, DocumentArgs e) in c:\Users\PC\Documents\Visual Studio 2012\Projects\SDK\Operations.cs:line 156

Delphi201534
Üye
Mesajlar: 8
Kayıt: 26 Oca 2015 11:58

Re: Delphi çalışma anı exe durdurma hatası

Mesaj gönderen Delphi201534 » 02 Şub 2015 05:10

Arkadaşlar sorunu çözdüm
Dll li register ettiğim gibi oluşan Tlb dosyasınıda register etmem gerekiyormuş
Yardımcı olmaya çalışan arkadaşlara teşekkürler

Cevapla