linux - 当我运行我的 pascal 程序时出现访问冲突,如何解决? (免费帕斯卡)

标签 linux class 64-bit freepascal fpc

这是PointClass.pas

{$mode objfpc} // Directive to be used for defining classes
{$m+}          // Directive to be used for using constructor

UNIT PointClass ;
INTERFACE
TYPE Point = CLASS(TObject)
    PRIVATE
        x : INTEGER ;
        y : INTEGER ;
    PUBLIC          
        (* Setter *)
        PROCEDURE setX (ix : INTEGER) ;
        PROCEDURE setY (iy : INTEGER) ;
        PROCEDURE setPoint (ix, iy : INTEGER) ;

        (* Getter *)
        FUNCTION getX : INTEGER ;
        FUNCTION getY : INTEGER ;
END;

IMPLEMENTATION   
USES Classes, SysUtils ;

PROCEDURE Point.setX (ix : INTEGER) ;
BEGIN
    x := ix ; {line 26}
END ;

PROCEDURE Point.setY (iy : INTEGER) ;
BEGIN
    y := iy ;
END ;

PROCEDURE Point.setPoint (ix, iy : INTEGER) ;
BEGIN
    x := ix ;
    y := iy ;
END ;

FUNCTION Point.getX : INTEGER ;
BEGIN
    getX := x ;
END ;

FUNCTION Point.getY : INTEGER ;
BEGIN
    getY := y ;
END ;
END.

ma​​in.pas

PROGRAM TESTSHAPE ;
USES PointClass ;
VAR
    p1 : Point ;

BEGIN
    p1.Create ;

    p1.setX (2) ; {line 9}
    p1.setY (1) ;
    WRITELN ('X is ', p1.getX, ' and Y is ', p1.getY) ;

    p1.setPoint (23, 2) ;
    WRITELN ('X is ', p1.getX, ' and Y is ', p1.getY) ;
END.

我用

编译
fpc -Tlinux -Criot -gl main.pas


这可以通过编译器,但是当我运行程序时,它说:

An unhandled exception occurred at $0000000000422AC5 :
EAccessViolation : Access violation
$0000000000422AC5 line 26 of PointClass.pas
$00000000004001DA line 9 of main.pas

我很努力,也找了很多,还是没能解决这个问题。
(抱歉我的英语不好!)

最佳答案

我找到了。 main.pas 是错误的:

p1.Create ; {Wrong}

正确的行是:

p1 := Point.Create ;

关于linux - 当我运行我的 pascal 程序时出现访问冲突,如何解决? (免费帕斯卡),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32442612/

相关文章:

linux - 为什么 perf 脚本不起作用?

linux - linux 在终止进程时是否释放自旋锁/信号量?

c - 我无法理解这个结果

java - 在 Eclipse 中处理非公共(public)类

ios - 如何限制使用 64 位设备的用户安装我的 iOS 应用程序?

c stdout 到 stdin 实时

javascript - 创建一个 JS 类 : IIFE vs return prototype

C++ Getter 方法打印奇怪的数字

windows - Internet Explorer 8 64 位和 Selenium 不工作

c++ - 错误 LNK1112 : module machine type 'x64' conflicts with target machine type 'X86'