![]() |
| Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir. |
EAccessViolation hatası |
Yanıt Yaz
|
| Yazar | |
Melih
Yeni Üye
Kayıt Tarihi: 09 Şubat 2026 Durum: Aktif Değil Puanlar: 25 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Konu: EAccessViolation hatasıGönderim Zamanı: 21 Saat 11 Dakika Önce Saat 14:07 |
|
Veritabanımdan veri çekmeye çalışırken EAccessViolation hatası alıyorum. Veriyi çekerken kullandığım query ve veritabanımı githubdan aldığım kodun içindekilerle değiştirdiğimde düzgün çalışıyor fakat kendi kodumda neden çalışmadığını anlamadım.
Yardımcı olabilir misiniz? https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous"> var MyForm: TclForm; addNewTaskButton: TClProButton; bottomPanel: TCLPanel; middlePanel: TCLPanel; topPanel: TCLPanel; toDoIcon: TCLImage; insertQuery: TclSqlQuery; ToDoListView: TClProListView; retrieveButton: TCLButton; void onAddButtonClick; { Clomosy.RunUnit('uCreateToDo'); } void onIconClick; { Clomosy.RunUnit('uToDoList'); } void retrieveCurrentDayItems; var Qry :TClSQLiteQuery; var dayNow: String; { dayNow = FormatDateTime('dd.mm.yyyy',Now); try qry = nil; Qry = Clomosy.DBSQLiteQueryWith('SELECT * FROM todo_items WHERE due_date = '+QuotedStr(dayNow)+' ORDER BY CAST(item_order AS INTEGER) ASC;'); Qry.OpenOrExecute; while (not Qry.EOF) { if(ToDoListView <> nil) ToDoListView.clLoadProListViewDataFromDataset(Qry); else ShowMessage('not created'); } except ShowMessage('retrieveCurrentDayItems Exception Class: '+LastExceptionClassName+' Exception GetData Message: '+LastExceptionMessage); } } void SqLiteConnection; var TableExists: Boolean; { try Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'DBToDoApp.db3', ''); Clomosy.DBSQLiteQuery.Sql.Text = 'SELECT name FROM sqlite_master WHERE type="table" AND name="todo_items";'; Clomosy.DBSQLiteQuery.OpenOrExecute; TableExists = not Clomosy.DBSQLiteQuery.Eof; if not (TableExists) { ToDoListView.clearList; ShowMessage('Table does not exist'); } else { ShowMessage('Dddatabase connected and table exists'); retrieveCurrentDayItems; } except ShowMessage('connectionfunc Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage); } } { MyForm=TclForm.Create(self); MyForm.LytTopBar.Visible = False; topPanel=MyForm.AddNewPanel(MyForm,'topPanel'); topPanel.Align=alMostTop; topPanel.Height=110; middlePanel=MyForm.AddNewPanel(MyForm, 'middlePanel'); middlePanel.Align=alCenter; middlePanel.Height=350; bottomPanel=MyForm.AddNewPanel(MyForm,'bottomPanel'); bottomPanel.Height=110; bottomPanel.Align=alMostBottom; bottomPanel.StyleLookup='pushpanel'; ToDoListView = MyForm.AddNewProListView(middlePanel,'ToDoListView'); ToDoListView.Align = alCenter; ToDoListView.Width = MyForm.clWidth/2; ToDoListView.Margins.Right = 10; ToDoListView.Margins.Bottom = 10; ToDoListView.Margins.Left = 10; ToDoListView.clProSettings.ViewType = lvWaterFall; ToDoListView.clProSettings.IsRound = True; ToDoListView.clProSettings.IsFill = True; ToDoListView.clProSettings.ColCount = 1; ToDoListView.clProSettings.ItemHeight = 150; ToDoListView.clProSettings.ItemSpace = 5; ToDoListView.clProSettings.BorderColor = clAlphaColor.clHexToColor('#20B2AA'); ToDoListView.clProSettings.BorderWidth = 1; ToDoListView.clProSettings.RoundWidth = 3; ToDoListView.clProSettings.RoundHeight = 3; ToDoListView.SetclProSettings(ToDoListView.clProSettings); retrieveButton=MyForm.AddNewButton(MyForm,'retrieveButton', 'Retrieve'); toDoIcon=MyForm.AddNewImage(topPanel,'toDoIcon'); MyForm.SetImage(toDoIcon,'https://w7.pngwing.com/pngs/32/64/png-transparent-to-do-list-notebook-computer-icons-action-item-task-android-to-do-list-icon-miscellaneous-angle-text-thumbnail.png'); toDoIcon.Align=alMostRight; toDoIcon.Width=40; toDoIcon.Height=40; toDoIcon.Margins.Top=0; toDoIcon.Margins.Right=30; addNewTaskButton=MyForm.AddNewProButton(bottomPanel, 'addNewTaskButton', '+'); addNewTaskButton.Align = alMostRight; addNewTaskButton.Margins.Right=30; addNewTaskButton.Margins.Bottom=30; addNewTaskButton.Width=80; addNewTaskButton.Height=80; addNewTaskButton.clProSettings.FontSize=60; addNewTaskButton.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#4fa5ab'); addNewTaskButton.clProSettings.RoundHeight=40; addNewTaskButton.clProSettings.RoundWidth=40; addNewTaskButton.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff'); addNewTaskButton.clProSettings.FontVertAlign=palCenter; addNewTaskButton.SetclProSettings(addNewTaskButton.clProSettings); MyForm.AddNewEvent(addNewTaskButton,tbeOnClick,'onAddButtonClick'); MyForm.AddNewEvent(toDoIcon,tbeOnClick,'onIconClick'); MyForm.AddNewEvent(retrieveButton,tbeOnClick,'retrieveCurrentDayItems'); SqLiteConnection; MyForm.Run; } |
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Değil Puanlar: 620 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 16 Saat 56 Dakika Önce Saat 18:22 |
|
Kodda hatanın sebebi temel hata retrieveCurrentDayItems içerisinde yer döngü mantığı
clLoadProListViewDataFromDataset fonksiyonu kendisine verilen sorgu sonucunda tüm verileri otomatik olarak döngüye alıp listeye ekliyor. Bu fonksiyonu while döngüsü içersine alındığın da döngü içerisinde Qry.Next yapılmadığın da sonsuz bir döngü oluşuyor ve hafıza hatası veriyor. while (not Qry.EOF) bloğunu silip sadece clLoadProListViewDataFromDataset(Qry); satırını bırakara dener misin |
|
![]() |
|
Melih
Yeni Üye
Kayıt Tarihi: 09 Şubat 2026 Durum: Aktif Değil Puanlar: 25 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 1 saat 39 Dakika Önce Saat 09:39 |
|
Söylediğiniz değişikliği yaptığımda aynı hatayı verdi. Ama sorunu ProListView yerine ListView kullanarak çözdüm sanırım ProListView'a clLoadListViewDataFromDataset() ile veri çekerken bir hata var, aşağıda verdiğim kod çalışıyor fakat başka hiçbir şeyi değiştirmeden ListView yerine ProListView kullanınca (13, 46 ve 102. satırları değiştirerek) EAccessViolation hatası veriyor.
![]() var MyForm: TclForm; addNewTaskButton: TClProButton; bottomPanel: TCLPanel; middlePanel: TCLPanel; topPanel: TCLPanel; toDoIcon: TCLImage; insertQuery: TclSqlQuery; ToDoListView: TCLListView; retrieveButton: TCLButton; void onAddButtonClick; { Clomosy.RunUnit('uCreateToDo'); } void onIconClick; { Clomosy.RunUnit('uToDoList'); } void retrieveCurrentDayItems; var Qry : TClSQLiteQuery; dayNow: String; { dayNow = FormatDateTime('dd.mm.yyyy',Now); try Qry = Clomosy.DBSQLiteQueryWith( 'SELECT id as RECORD_GUID, ' + 'item_text as MAIN_TEXT, ' + 'due_date as FOOTER_TEXT ' + 'FROM todo_items ' + 'WHERE due_date = '+QuotedStr(dayNow)+ 'ORDER BY substr(due_date,7,4) || "-" || substr(due_date,4,2) || "-" || substr(due_date,1,2) ASC, ' + 'CAST(item_order AS INTEGER) ASC;' ); //Qry = Clomosy.DBSQLiteQueryWith('SELECT * FROM todo_items WHERE due_date = '+QuotedStr(dayNow)+' ORDER BY CAST(item_order AS INTEGER) ASC;'); Qry.OpenOrExecute; while (not Qry.EOF) { toDoListView.clLoadListViewDataFromDataset(Qry); } except ShowMessage('Exception Class: '+LastExceptionClassName+' Exception GetData Message: '+LastExceptionMessage); } } void SqLiteConnection; var TableExists: Boolean; { try Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'DBToDoApp.db3', ''); Clomosy.DBSQLiteQuery.Sql.Text = 'SELECT name FROM sqlite_master WHERE type="table" AND name="todo_items";'; Clomosy.DBSQLiteQuery.OpenOrExecute; TableExists = not Clomosy.DBSQLiteQuery.Eof; if not (TableExists) { ToDoListView.clearList; ShowMessage('Table does not exist'); } else { ShowMessage('Dddatabase connected and table exists'); } except ShowMessage('connectionfunc Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage); } } { MyForm=TclForm.Create(self); MyForm.LytTopBar.Visible = False; topPanel=MyForm.AddNewPanel(MyForm,'topPanel'); topPanel.Align=alMostTop; topPanel.Height=110; middlePanel=MyForm.AddNewPanel(MyForm, 'middlePanel'); middlePanel.Align=alCenter; middlePanel.Height=350; bottomPanel=MyForm.AddNewPanel(MyForm,'bottomPanel'); bottomPanel.Height=110; bottomPanel.Align=alMostBottom; bottomPanel.StyleLookup='pushpanel'; ToDoListView = MyForm.AddNewListView(middlePanel,'ToDoListView'); /*ToDoListView.Align = alCenter; ToDoListView.Width = MyForm.clWidth/2; ToDoListView.Margins.Right = 10; ToDoListView.Margins.Bottom = 10; ToDoListView.Margins.Left = 10; */ toDoListView.Align = alClient; toDoListView.Margins.Left = 40; toDoListView.Margins.Bottom = 10; toDoListView.Margins.Right = 30; toDoListView.Margins.Top = 10; /* ToDoListView.clProSettings.ViewType = lvWaterFall; ToDoListView.clProSettings.IsRound = True; ToDoListView.clProSettings.IsFill = True; ToDoListView.clProSettings.ColCount = 1; ToDoListView.clProSettings.ItemHeight = 150; ToDoListView.clProSettings.ItemSpace = 5; ToDoListView.clProSettings.BorderColor = clAlphaColor.clHexToColor('#20B2AA'); ToDoListView.clProSettings.BorderWidth = 1; ToDoListView.clProSettings.RoundWidth = 3; ToDoListView.clProSettings.RoundHeight = 3; ToDoListView.SetclProSettings(ToDoListView.clProSettings); */ retrieveButton=MyForm.AddNewButton(MyForm,'retrieveButton', 'Retrieve'); toDoIcon=MyForm.AddNewImage(topPanel,'toDoIcon'); MyForm.SetImage(toDoIcon,'https://w7.pngwing.com/pngs/32/64/png-transparent-to-do-list-notebook-computer-icons-action-item-task-android-to-do-list-icon-miscellaneous-angle-text-thumbnail.png'); toDoIcon.Align=alMostRight; toDoIcon.Width=40; toDoIcon.Height=40; toDoIcon.Margins.Top=0; toDoIcon.Margins.Right=30; addNewTaskButton=MyForm.AddNewProButton(bottomPanel, 'addNewTaskButton', '+'); addNewTaskButton.Align = alMostRight; addNewTaskButton.Margins.Right=30; addNewTaskButton.Margins.Bottom=30; addNewTaskButton.Width=80; addNewTaskButton.Height=80; addNewTaskButton.clProSettings.FontSize=60; addNewTaskButton.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#4fa5ab'); addNewTaskButton.clProSettings.RoundHeight=40; addNewTaskButton.clProSettings.RoundWidth=40; addNewTaskButton.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff'); addNewTaskButton.clProSettings.FontVertAlign=palCenter; addNewTaskButton.SetclProSettings(addNewTaskButton.clProSettings); MyForm.AddNewEvent(addNewTaskButton,tbeOnClick,'onAddButtonClick'); MyForm.AddNewEvent(toDoIcon,tbeOnClick,'onIconClick'); MyForm.AddNewEvent(retrieveButton,tbeOnClick,'retrieveCurrentDayItems'); SqLiteConnection; retrieveCurrentDayItems; MyForm.Run; }
|
|
![]() |
|
Yanıt Yaz
|
|
| Tweet |
| Forum Atla | Forum İzinleri ![]() Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |