标签: pascal

5
推荐指数
1
解决办法
2253
查看次数

Java/C/C++/C#/ PHP到Pascal转换器?

有谁知道是否有Java/C/C++/C#/ PHP到Pascal转换器?

c c++ java delphi pascal

5
推荐指数
1
解决办法
1万
查看次数

Turbo Pascal覆盖层是如何工作的?

我正在游戏0x10c 实现16位DCPU的一个assemblinker.

有人向我建议的一种技术是使用"叠加,就像在当天回来的Turbo Pascal",以便在运行时交换代码.

我得到了基本的想法(链接覆盖符号到同一个内存,在ref之前交换),但是它们的实现是什么?

这是编译器在引用之前插入的函数吗?这是陷阱吗?叠加层的数据是存储在叠加层的位置,还是存放在某个大表中?它运作良好,还是经常破裂?是否有用于组装的接口与覆盖的Pascal链接(反之亦然),还是不兼容?

谷歌基本上没有给我任何信息(除了它是现代Pascal编译器的禁止).而且,我只是,就像,五年太年轻,以至于他们当前都不需要它们.

pascal dcpu-16

5
推荐指数
1
解决办法
1226
查看次数

帕斯卡的记录集

我想知道是否有办法在pascal中创建一组记录.我正在寻找互联网,并认为这是不可能的.

type    
  TRecord = record
    StrField: string;
    IntField: Integer;
  end;

  TSetOfRecord = set of TRecord;         
Run Code Online (Sandbox Code Playgroud)

pascal

5
推荐指数
1
解决办法
460
查看次数

Delphi:如何获取(当前代码行,当前单位,当前函数)而不使用Assertion?

我正在尝试在我的程序上创建一个日志系统,它将记录文本文件上的调试消息,我想保存调用日志消息的代码中的确切位置,但我不想使用Assert函数,因为它创建例外,这个系统不仅仅用于记录异常,我还要编写一些调试信息.

使用断言的示例:

procedure AnyProcedure();
begin
  try
    Assert(1=0);
  except
    on E: Exception do
      Log.AddLine('Log occurred is '+E.Message+' : Start');//Log occurred is "c:\progr~..jkdj.pas" at line [29]
  end;

  //....some code
  try
    Assert(1=0);
  except
    on E: Exception do
      Log.AddLine('Log occurred is '+E.Message+' : Step1 done');//Log occurred is "c:\progr~..jkdj.pas" at line [37]
  end;

  //....some code
  try
    Assert(1=0);
  except
    on E: Exception do
      Log.AddLine('Log occurred is '+E.Message+' : Step2 done');//Log occurred is "c:\progr~..jkdj.pas" at line [45]
  end;

  //....some code
  try
    Assert(1=0);
  except
    on E: Exception do …
Run Code Online (Sandbox Code Playgroud)

delphi logging pascal exception-handling assertion

5
推荐指数
2
解决办法
5452
查看次数

Inno设置目录存在

我试图检查inno设置如果目录存在,我想分别手动编程.我在Inno设置中创建的安装程序是一个更新.这是棘手的部分,初始设置使用C#应用程序来安装光盘上的所有文件,因为每个客户的设置都不同.我想现在检查安装了哪些目录,因为我知道我需要更新什么.我的问题是:如何在Inno设置中确定目录是否存在,或者如何确定目录中的子目录

并一如既往地提前感谢.

directory pascal inno-setup

5
推荐指数
1
解决办法
6044
查看次数

如何删除警告:link.res包含输出节;你忘了-T吗?

我正在使用fpc编译器,并且想删除此警告。我已经阅读了fpc的选项,但找不到该怎么做。这可能吗?它在我运行命令时出现:

fpc foo.pas
Run Code Online (Sandbox Code Playgroud)

出:

目标操作系统:Linux for i386编译foo.pas链接p2 / usr / bin / ld:警告:link.res包含输出节;你忘了-T吗?汇编79行,0.1秒

linux pascal ld fpc

5
推荐指数
1
解决办法
3536
查看次数

传递函数而不是调用它(Delphi)

所以我在Delphi中有一个表单

TFrmMainForm = class(TForm, IFrmMainFormInterface)
  public
    procedure Display(Sender:TObject); 
end;
Run Code Online (Sandbox Code Playgroud)

界面是

IFrmMainFormInterface = interface
  procedure Display(Sender:TObject);
end;
Run Code Online (Sandbox Code Playgroud)

另一堂课

TMainFormViewModel = class
    strict private
      fTimer : TTimer;
      function GetOnTimer : TNotifyEvent;
      procedure SetOnTimer(timerEvent : TNotifyEvent);
    public
      property OnTimer : TNotifyEvent read GetOnTimer write SetOnTimer;
end;

implementation

function TMainFormViewModel.GetOnTimer : TNotifyEvent;
begin
    Result := fTimer.OnTimer;
end;

procedure TMainFormViewModel.SetOnTimer(timerEvent : TNotifyEvent);
begin
    fTimer.OnTimer := timerEvent;
end;
Run Code Online (Sandbox Code Playgroud)

我有一个Form MainForm的实例和视图模型类MainFormViewModel

我想试试

MainFormViewModel.OnTimer := IFrmMainFormInterface(MainForm).Display
Run Code Online (Sandbox Code Playgroud)

问题是这给我一个错误信息

实际参数不够

我相信这是因为delphi试图调用显示功能而不是将其分配给OnTimer事件.我不知道如何解决这个问题,我尝试使用@运算符但没有成功.

编辑

我应该补充一点,MainForm在这个函数中被声明为

procedure Initialise<T:Class, IFrmMainFormInterface>(MainForm …
Run Code Online (Sandbox Code Playgroud)

delphi pascal function

5
推荐指数
1
解决办法
755
查看次数

在turbo pascal 5.5中的旧IBM PS/2上读/写文件

问题:我最近收购了1989年的IBM PS2,我正在尝试通过软盘将大型文件从我新的基于UNIX的机器移到这个IBM.我有一个bash脚本将我的文件分成~2MB块,现在我正在尝试编写一个pascal程序,以便在它们被传输后重建这些文件.

我无法在此计算机上找到正确的读/写文件方法.我已经尝试了各种pascal教程站点,但它们都适用于较新版本(我在Pascal文件处理中遵循的站点).我能够创建一个空文件(如下所述),但我无法写入它.有谁知道这种类型的计算机正确的pascal读写方法?

我知道这是一个晦涩难懂的问题,所以,如果您有任何帮助,请提前感谢您!

细节:

正确创建文件的当前测试代码如下:

program testingFiles;
uses Crt, Win;

const FILE_NAME = 'testFile.txt';
var outFile : File;

begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);
rewrite(outFile);    

end.
Run Code Online (Sandbox Code Playgroud)

这是一些测试代码不工作,方法的append()close()无法找到:

program testingFiles;
uses Crt, Win;

const FILE_NAME = 'testFile.txt';
var outFile : File;

begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);

append(outFile);
writeln('this should be in the file');
close(outFile);

end.
Run Code Online (Sandbox Code Playgroud)

这是另一种也不起作用的writeln()方法,该方法只能打印到终端.但否则这会编译.

program testingFiles;
uses Crt, Win;

const FILE_NAME = 'testFile.txt';
var outFile : File; …
Run Code Online (Sandbox Code Playgroud)

pascal dos turbo-pascal

5
推荐指数
1
解决办法
253
查看次数

在Delphi 2007 Pascal初始化块中声明索引变量的语法是什么?

我需要在Delphi初始化块中初始化和数组.

看来你不能在初始化块中使用var块,因为这不会编译:

initialization
var
idx : Integer;
begin
    for idx := 0 to length(LastState)-1 do begin
        LastState[idx] := $FFFF;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

(第一个编译错误抱怨var):

([DCC错误] ScheAutoInfRb2.pas(6898):E2029预期语句但发现'VAR')

这也不编译(因为没有声明idx):

initialization

    for idx := 0 to length(Last_Pro2State)-1 do begin
        Last_Pro2State[idx] := $FFFF;
    end;
Run Code Online (Sandbox Code Playgroud)

[DCC错误] ScheAutoInfRb2.pas(6899):E2003未声明的标识符:'idx'

我知道我可以在主单元声明中声明一个索引器,但是它有一些缺点:

  1. 索引器的声明与其使用分开,但实现部分(可以是数百行),以及

  2. 索引器的范围包括"实现"部分中的所有功能和过程.

delphi pascal delphi-7

5
推荐指数
1
解决办法
296
查看次数