Lazarus在Windows上编译程序后引发异常类

时间:2014-12-01 12:42:52

标签: pascal lazarus

我在Lazarus Pascal写过程序。它完全写在Mac上,然后我切换到Windows,重新编译它(重新编译.dylib到.dll,重新编译并安装自定义组件),它运行,但当我尝试做任何事情时,它会抛出错误:

在调试模式下:

Project project1 raised exception class 'External:SIGSEGV'. At address 772CD4F1

运行.exe文件:

Access violation.

//编辑

我注意到这部分代码存在问题,特别是ListView.Clear命令:

procedure AddressList.updateView(ListView : TListView);
var
  element : ListElement;
  newItem : TListItem;
begin
  ListView.Clear;

  element := first;

  if element = nil then
    exit;

  while element <> nil do
  begin
    newItem := ListView.Items.Add;
    newItem.Caption := element^.name;
    newItem.SubItems.Add(element^.surname);
    newItem.SubItems.Add(element^.address);
    newItem.SubItems.Add(formatNumber(element^.phoneNumber));

    element := element^.next;
  end;

end;

这怎么可能,我怎么办?

1 个答案:

答案 0 :(得分:3)

在Free Pascal中,Classe实例总是隐式指针。

由于某种原因,您的ListView似乎不包含正确创建的类实例。 “指针”ListView指向任何地方。当类方法Clear尝试访问数据时,会出现分段错误。

ListView的监视应显示垃圾数据或<invalid>