Sayfayı Yazdır | Pencereyi Kapat

EAccessViolation hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Clomosy ile değişken kullanımı
Forum Tanımlaması: TRObject dili ile değişken tanımlaması ve ekranda gösterme
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1314
Tarih: 15 Nisan 2026 Saat 04:33
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: EAccessViolation hatası
Mesajı Yazan: Melih
Konu: EAccessViolation hatası
Mesaj Tarihi: 12 Şubat 2026 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" rel="nofollow - 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" rel="nofollow - 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;
}



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 12 Şubat 2026 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 


Mesajı Yazan: Melih
Mesaj Tarihi: 13 Şubat 2026 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;
}



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net