标签: pascal

如何在Lazarus中为Mac执行相当于shellexecute()的操作?

我怎样才能shellexecute()在Lazarus中为Mac 执行相同的操作?

delphi macos pascal lazarus

7
推荐指数
1
解决办法
4197
查看次数

Think Pascal调试器是什么让它如此具有传奇色彩?

我一直在锐化编码刀并重新回到开发阶段.几年前,许多人提到在(经典)Mac上出现的赛门铁克Think Pascal调试器是绝对的傻瓜,没有其他任何东西像它在任何地方.我发现这个说法很奇怪,考虑到没有人试图克隆所说的调试器......这究竟是什么让这个特殊的调试器如此特别?

debugging macos pascal

7
推荐指数
1
解决办法
1534
查看次数

在Pascal中使用#

Q1:这是什么意思:WriteLn (#$0b)

$0b应该是十六进制的0x0b,但#标志呢?

Q2:

x:=readkey;
if ( x = #5) do...
Run Code Online (Sandbox Code Playgroud)

是否#5意味着5?那么#标志是什么?

非常感谢.

pascal

7
推荐指数
1
解决办法
294
查看次数

Pascal中的'#"符号是什么?

例如:

x := #123;
Run Code Online (Sandbox Code Playgroud)

我试图搜索谷歌,但我根本不知道这意味着什么.

delphi pascal

7
推荐指数
2
解决办法
4660
查看次数

Application.MainFormOnTaskbar:= False; 没有隐藏任务栏中的应用程序

为什么将Application.MainFormOnTaskbar设置为False并不会阻止应用程序显示在任务栏上?

请帮忙.谢谢.

delphi pascal

7
推荐指数
1
解决办法
4359
查看次数

为什么Pascal控件结构看起来不一致?

大多数Pascal控件结构对我有意义,例如:

for ... do {statement};

if (condition) then {statement};

while (condition) do {statement};
Run Code Online (Sandbox Code Playgroud)

其中{statement}是单个语句或begin ... end块.我有一个问题:

repeat {statement-list} until (expression);

try {statement-list} except {statement-list} end;
Run Code Online (Sandbox Code Playgroud)

重复尝试具有相同的通用结构,只接受单个语句或开始 ... 结束块,而不是具有未正式阻止开头结尾的语句列表,这不是更好吗?

delphi pascal language-design freepascal

7
推荐指数
3
解决办法
1022
查看次数

D3D9挂钩 - 使用Direct3D9覆盖

好的,所以我试图在Direct X游戏上为一些额外的按钮做一些叠加.

我在这里找到了一个很好的覆盖的c ++示例:http://www.gamedev.net/topic/359794-c-direct3d-hooking-sample/

所以我开始将它转换为Delphi.通过一些日志记录,我可以看到它在正确的进程上启动钩子并正确挂钩Direct3DCreate9().

下一步成功创建TMyDirect3D9.但是这个过程从这里崩溃了.

我的有根据的猜测(基于Ollydbg中的一些调试)当我通过挂钩的Direct3DCreate9()将MyDirect3D9返回到原始进程并且它尝试调用其中一个类(接口)函数时,它失败了.

代码如下.如果我能提供任何其他信息以帮助告诉我.

主DLL:

library LeagueUtilityBox;

{$R *.res}

{$DEFINE DEBUG}

uses
  Windows,
  APIHijack in 'APIHijack.pas',
  Direct3D9 in '..\DirectX 9.0\Direct3D9.pas',
  uSharedMem in '..\Misc\uSharedMem.pas',
  MyDirect3D9 in 'MyDirect3D9.pas',
  MyDirect3DDevice9 in 'MyDirect3DDevice9.pas',
  {$IFDEF DEBUG}
  SysUtils,
  uLog in '..\Misc\uLog.pas',
  {$ENDIF}
  uMisc in 'uMisc.pas';

var
  SharedMem : TSharedMem;
  D3DHook: SDLLHook;
  hHook : DWORD;
  MyDirect3D9 : TMyDirect3D9;

function GetTargetProcess: String;
const
  KeyBase : DWORD = HKEY_CURRENT_USER;
  KeyLocation : String = 'Software\LeagueUtilityBox';
var
  RegKey : HKEY;
  TargetProcess : Array[0..511] Of …
Run Code Online (Sandbox Code Playgroud)

delphi directx hook pascal directx-9

7
推荐指数
1
解决办法
4950
查看次数

什么是好的Lazarus/FPC资源?

我想学习在Lazarus中开发应用程序,但我需要Lazarus的资源,最好是书籍.

请记住,我知道Pascal的0.谢谢.

pascal lazarus

7
推荐指数
1
解决办法
2565
查看次数

Delphi SizeOf(NativeInt)与x86-64上的C sizeof(int).为什么尺寸差异?

前言

经过很长一段时间的C工作后,我回到Delphi,发现Delphi中有一些新东西.一个是NativeInt.

令我惊讶的是,我发现Delphi和C处理x86-64不同的"原生整数" 1种类型.Delphi NativeInt似乎表现得像C void*Delphi Pointer,这与我对名称的期望相反.

Delphi中,NativeInt的大小为64位.代码中表示:

SizeOf(NativeInt) = SizeOf(Pointer) = SizeOf(Int64) = 8
Run Code Online (Sandbox Code Playgroud)

C只有64位指针.int仍然是32位.代码2中表示:

sizeof(int) == 4 != sizeof(void *) == 8
Run Code Online (Sandbox Code Playgroud)

甚至Free Pascal编译器3也同意NativeInt的大小.

为什么Delphi NativeInt选择64位,C int选择32位?

当然,根据语言文档/规范,两者都是有效的.但是,"语言允许它"并不是一个真正有用的答案.

我想这与执行速度有关,因为这是今天C的主要卖点.维基百科和其他消息来源都说x86-64确实有64位操作数寄存器.但是,它们还声明默认操作数大小为32位.因此,与32位操作数相比,64位操作数的操作可能更慢?或者64位寄存器可以同时执行2个32位操作?这是一个原因吗?

编译器的创建者是否确实选择了这些尺寸?

脚注

  1. 我将Delphi NativeIntC int进行比较,因为名称/规范表明它们具有相似的目的.我知道还有Delphi Integer,其行为类似于x68上的C int和Delphi中的x86-64.
  2. sizeof()返回C中多个char的大小.但是,x86-64上的char是1个字节.
  3. 它在Delphi模式和NativeInt的默认模式下都是这样做的.默认模式下的其他整数类型是其他整个蠕虫类型.

c delphi pascal x86-64 sizeof

7
推荐指数
1
解决办法
1575
查看次数

可以在FreePascal中的变体记录的案例中复制标识符吗?

这是我的问题:我想创建一个记录类型,其中在变体记录的情况下,一些(但不是全部)将具有某个字段.根据维基,这是完全合法的.然而,当我尝试编译以下代码时:

program example;

{$mode objfpc}{$H+}

uses sysutils;

type
  maritalStates = (single, married, widowed, divorced);

  TPerson = record
    name: record
      first, middle, last: string;
    end;
    sex: (male, female);
    dob: TDateTime;
    case maritalStatus: maritalStates of
      single: ( );
      married, widowed: (marriageDate: TDateTime);
      divorced: (marriageDate, divorceDate: TDateTime;
        isFirstDivorce: boolean)      
  end;

var
  ExPerson: TPerson;

begin
ExPerson.name.first := 'John';
ExPerson.name.middle := 'Bob';
ExPerson.name.last := 'Smith';
ExPerson.sex := male;
ExPerson.dob := StrToDate('05/05/1990');
ExPerson.maritalStatus := married;
ExPerson.marriageDate := StrToDate('04/01/2015');

end.
Run Code Online (Sandbox Code Playgroud)

编译失败,出现以下错误:

$ fpc ex.pas
Free …
Run Code Online (Sandbox Code Playgroud)

pascal freepascal record variant

7
推荐指数
1
解决办法
7976
查看次数