标签: pascal

任何Java字节码生成指南?

我们正在编写从PascalJVM Bytecode的某种编译器.我们已经实现了表达式树生成,因此下一步应该是创建文件.您能否建议至少从某些静态数据生成任何文件的指南/教程?因为我已经用Google搜索了2个小时并阅读了JVM规范,但我真的需要一些最简单的例子来开始开发整个东西..class.class

java compiler-construction pascal jvm bytecode

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

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
查看次数

Lazarus IDE中多个编译器的全局管理

我一直在搜索Lazarus IDE文档,但到目前为止只发现了与交叉编译相关的信息,所以我希望有人能给我一个直接的答案.我目前正在开发一个需要编译32位Windows和64位Windows的项目.另外,我已经设置了Free Pascal编译器的两个版本.Lazarus是否具有用于在两个编译器中进行配置的任何内置功能,然后使用适当的编译器基于构建目标?理想情况下,这将在全局级别完成,以便配置在项目中保持不变,但如果只能在项目级别完成,我不介意这样做.

delphi pascal lazarus

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

如何计算一个这么大的数字?

我现在正在学习Pascal一个月了,我遇到了一个似乎无法解决的问题.基本上我有2号,Ñ中号,其中Ñ小于10 100 000中号小于10 8两者都是大于0我需要计算Ñ中号.

我无法弄清楚如何做到这一点,甚至没有QWord.我尝试过,string但我不知道一个好方法.它总是对我来说太复杂了,因为我使用了一个for函数,我从字符串N和字符串M中得到最后一个数字然后我用两个if函数减去它们(其中N的最后一个数字高于或等于M的最后一个数字,如果它更低).基本上,我觉得这个简单的问题太复杂了.

pascal bignum modulus

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

使用{AppVersion}作为Inno Setup中函数的参数

所以我有一个更新一些XML的函数,我希望将脚本部分中{AppVersion}设置的[Setup]函数作为常量传递给此函数

我试过了

MyFunction(ExpandConstants({AppVersion})
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误?如何正确地将此常量传递给我的函数

我的守则

[Files]
Source: ".\Source\myfile.txt"; DestDir: "{app}\System"; AfterInstall: MyFunction('{#SetupSetting("AppVersion")}')

[Setup]
AppId=MyApp
AppName=My Application
AppVersion=011
DefaultDirName=C:\MyApp

[Code]
procedure MyFunction(Text: String);
begin
  MsgBox(Text, mbInformation, MB_OK);
end;
Run Code Online (Sandbox Code Playgroud)

pascal inno-setup ansi

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

我可以在Object Pascal中定义类中的类型吗?

这是一个例子(不起作用):

type
    menu = class
        private
            menu_element = RECORD
                id: PtrUInt;
                desc: string;
            end;
        public
            procedure foo();
    end;
Run Code Online (Sandbox Code Playgroud)

delphi types pascal

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

在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 BoolToStr为true表示为-1

Delphi函数BoolToStr将布尔值转换为字符串.

结果为true或false,或分别为"numeric"," - 1"和"0".为什么-1而不是1?

delphi pascal boolean

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