Arkadaşlar yazdığım okul programında derleme esnasında hata yok. Exe çalışmaya başladıktan bir süre sonra (süre de belli olmuyor. Bazen üç beş dakika sonra, bazen bir saat bazen daha uzun zaman sonra) aşağıda resimlerini ekledim hatalar çıkmaya başlıyor. Tahminim timer nesnesi içine yazdığım kod kısmında ama nerde niçin verdiğini bulamadım. desteklerinizi bekler saygılar sunarım.
1. resim: invalid pointer operation.
2. resim :acces violation at adress 00401d27 in module "okul.exe" write of adress 9a35e1dc
Resimdeki hatanın sebebi ne olabilir ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Resimdeki hatanın sebebi ne olabilir ?
- Dosya ekleri
-
- hata2.png (8.21 KiB) 1528 kere görüntülendi
-
- hata1.png (4 KiB) 1528 kere görüntülendi
Re: Resimdeki hatanın sebebi ne olabilir ?
Bu kadar veri ile cevap vermek güç. En azından timer içindeki kodu buraya yazsaydın... Neyi yinelediğini bilirdik en azından.
Zamana veya duruma bağlı bir nesne create ediyor veya free ediyor olabilir misin, paralel işlem yapan başka timer, kullanıcı var mıdır gibi soruların cevabı da lazım.
Zamana veya duruma bağlı bir nesne create ediyor veya free ediyor olabilir misin, paralel işlem yapan başka timer, kullanıcı var mıdır gibi soruların cevabı da lazım.
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: Resimdeki hatanın sebebi ne olabilir ?
mrmarman hocam timer nesnesine bağlı ekranda tarih ve saati labelde gösteren kod ile aşağıdaki procedur kodlarım var.
Kod: Tümünü seç
procedure TANA_FORM.DersZaman;
var gun:string;
gunid,id:integer;
baslama:tdatetime;
begin
//DERS PROGRAMI GOSTER
gunid:=DayOfWeek(Now);
case gunid of
2:gun:='PAZARTESI';
3:gun:='SALI';
4:gun:='CARSAMBA';
5:gun:='PERSEMBE';
6:gun:='CUMA';
else
gun:='HAFTASONU';
end;
DM.DERS_PROG_SEC.Close; // Su anki dersi sec
DM.DERS_PROG_SEC.SQL.Text:='SELECT DERS FROM DERS_SAATLERI WHERE (TIME() > CDate(GIRIS)) AND (TIME() < CDate(CIKIS))';
DM.DERS_PROG_SEC.Open;
if DM.DERS_PROG_SEC.RecordCount=0 Then // ders saati değil ise sonraki dersi sec
Begin
DM.DERS_PROG_SEC.Close;
DM.DERS_PROG_SEC.SQL.Text:='SELECT top 1 DERS FROM DERS_SAATLERI WHERE (TIME() < CDate(GIRIS))';
DM.DERS_PROG_SEC.Open;
End;
DM.DERS_PROG_GOSTER.Close;
if DM.DERS_PROG_SEC.RecordCount<>0 Then
Begin
DM.DERS_PROG_GOSTER.SQL.Text:='SELECT SINIFLAR.SINIF, DERS_P.'+gun+' AS bgun,DERS_P.'+gun+'_O AS OGRETMEN,DERS_P.K_DERS FROM DERS_P INNER JOIN SINIFLAR ON DERS_P.S_ID = SINIFLAR.Kimlik WHERE K_DERS='+QuotedStr(DM.DERS_PROG_SEC.FIELDBYNAME('DERS').ASSTRING);
DM.DERS_PROG_GOSTER.Open;
End;
//DERS PROGRAMI GOSTER SON
DM.DERS_PROG_SEC.Close;
DM.DERS_PROG_SEC.SQL.Text:='SELECT DERS,CDate(GIRIS) as gg,CDate(CIKIS) as cc FROM DERS_SAATLERI order by GIRIS';
DM.DERS_PROG_SEC.Open;
DM.DERS_PROG_SEC.First;
if Time < DM.DERS_PROG_SEC.FieldByName('gg').AsDateTime Then
Begin //Ders Baslamamıs
BILGI.Caption:='DERSLERİMİZ HENÜZ BAŞLAMADI...';
DM.DS_DERS_PROG_GOSTER.Enabled:=FALSE;
label_durum.Caption:='DERSİN BİTMESİNE '+TimeToStr(TIME-(DM.DERS_PROG_SEC.FieldByName('GG').AsDateTime) );
End;
DM.DERS_PROG_SEC.Last;
if Time > DM.DERS_PROG_SEC.FieldByName('cc').AsDateTime Then
Begin //Ders Bitmiş
BILGI.Caption:='DERSLER BİTTİ.';
DM.DS_DERS_PROG_GOSTER.Enabled:=FALSE;
label_durum.Caption:='';
End;
if DM.DERS_PROG_SEC.RecordCount>0 Then
Begin
if (GUN='HAFTASONU')then BEGIN
BILGI.Caption:='HAFTA SONU';
DM.Q_nobet_source.DataSet.Active:=FALSE;
DM.DS_DERS_PROG_GOSTER.DataSet.Active:=FALSE;
EXIT;
END;
DM.DERS_PROG_SEC.First;
While Not(DM.DERS_PROG_SEC.Eof) Do
Begin
if (Time >DM.DERS_PROG_SEC.FieldByName('GG').AsDateTime) Then
Begin
DM.DS_DERS_PROG_GOSTER.Enabled:=TRUE;
BILGI.Caption:='ŞUAN '+ DM.DERS_PROG_SEC.FieldByName('DERS').AsString+'TEYİZ';
label_durum.Caption:='DERSİN BİTMESİNE '+TimeToStr(TIME-(DM.DERS_PROG_SEC.FieldByName('CC').AsDateTime) );
//Break;
End;
if (Time > DM.DERS_PROG_SEC.FieldByName('CC').AsDateTime)Then
Begin
BILGI.Caption:='ŞUAN TENEFÜSTEYİZ.';
DM.DS_DERS_PROG_GOSTER.Enabled:=FALSE;
label_durum.Caption:='';
// Break;
End;
DM.DERS_PROG_SEC.Next;
End;
End;
End;
Re: Resimdeki hatanın sebebi ne olabilir ?
ilk hata timer nesnesi içinde ardışık veritabanı erişimi sıkıntılıdır. Çünkü timer bir thread olarak çalışır, saniye mertebesinde interval gibi kısa aralıklarla daha tablo erişimi aktifleşmeden bir daha erişim bir daha erişim sonra al sana çöküş.
Zaman takibi için seyrek bir sorgu olmalı. Bu timer içinde atıyorum dakikada bir veritabanına erişime kadar seyrek olmalı. Sana bir fikir, gerçekleşmesini beklediğin saati bir değişkende tutup, o an gerçekleşene kadar tabloya geri dönme. Böylece erişim süresi alarm aralığı kadar olacaktır. Alarm gerçekleşince aynı değişkene bir sonraki saati alırsın.
Zaman takibi için seyrek bir sorgu olmalı. Bu timer içinde atıyorum dakikada bir veritabanına erişime kadar seyrek olmalı. Sana bir fikir, gerçekleşmesini beklediğin saati bir değişkende tutup, o an gerçekleşene kadar tabloya geri dönme. Böylece erişim süresi alarm aralığı kadar olacaktır. Alarm gerçekleşince aynı değişkene bir sonraki saati alırsın.
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: Resimdeki hatanın sebebi ne olabilir ?
Teşekkür ederim hocam hemen girişimlere başlıyorum.