有谁知道是否有Java/C/C++/C#/ PHP到Pascal转换器?
我正在为游戏0x10c 实现16位DCPU的一个assemblinker.
有人向我建议的一种技术是使用"叠加,就像在当天回来的Turbo Pascal",以便在运行时交换代码.
我得到了基本的想法(链接覆盖符号到同一个内存,在ref之前交换),但是它们的实现是什么?
这是编译器在引用之前插入的函数吗?这是陷阱吗?叠加层的数据是存储在叠加层的位置,还是存放在某个大表中?它运作良好,还是经常破裂?是否有用于组装的接口与覆盖的Pascal链接(反之亦然),还是不兼容?
谷歌基本上没有给我任何信息(除了它是现代Pascal编译器的禁止).而且,我只是,就像,五年太年轻,以至于他们当前都不需要它们.
我想知道是否有办法在pascal中创建一组记录.我正在寻找互联网,并认为这是不可能的.
type
TRecord = record
StrField: string;
IntField: Integer;
end;
TSetOfRecord = set of TRecord;
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的程序上创建一个日志系统,它将记录文本文件上的调试消息,我想保存调用日志消息的代码中的确切位置,但我不想使用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) 我试图检查inno设置如果目录存在,我想分别手动编程.我在Inno设置中创建的安装程序是一个更新.这是棘手的部分,初始设置使用C#应用程序来安装光盘上的所有文件,因为每个客户的设置都不同.我想现在检查安装了哪些目录,因为我知道我需要更新什么.我的问题是:如何在Inno设置中确定目录是否存在,或者如何确定目录中的子目录
并一如既往地提前感谢.
我正在使用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秒
所以我在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) 问题:我最近收购了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) 我需要在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'
我知道我可以在主单元声明中声明一个索引器,但是它有一些缺点:
索引器的声明与其使用分开,但实现部分(可以是数百行),以及
索引器的范围包括"实现"部分中的所有功能和过程.