小编klu*_*udg的帖子

Delphi:将TByte转换为AnsiString中相应的Hex值

我正在尝试输出TByte的值作为其在AnsiString中的相应十六进制表示.

示例:TByte为0x4F AnsiString:"4F"(两个字符,一个4和一个F)

我知道StringOf函数,但转换为"映射"字符.

是否有任何体面的功能或有人知道如何快速实现这个功能?

非常感谢你提前:)

delphi hex byte delphi-2010

3
推荐指数
1
解决办法
2627
查看次数

在FPC中划分单位名称

是否可以将带有范围名称的Delphi单元移植MyLib.Classes.pas到FPC(版本2.6.0)而不重命名它以删除范围前缀MyLib.

delphi fpc

3
推荐指数
1
解决办法
261
查看次数

为什么这个LEA指令不能编译?

我正在将32位Delphi BASM代码移植到64位FPC(Win64目标操作系统),并想知道为什么下一条指令不能在64位FPC中编译:

{$IFDEF FPC}
  {$ASMMODE INTEL}
{$ENDIF}

procedure DoesNotCompile;
asm
      LEA   ECX,[ECX + ESI + $265E5A51]
end;

// Error: Asm: 16 or 32 Bit references not supported
Run Code Online (Sandbox Code Playgroud)

可能的解决方法是:

procedure Compiles1;
asm
      ADD   ECX,ESI
      ADD   ECX,$265E5A51
end;

procedure Compiles2;
asm
      LEA   ECX,[RCX + RSI + $265E5A51]
end;
Run Code Online (Sandbox Code Playgroud)

我只是不明白LEAWin64目标中的32位指令有什么问题(它在32位Delphi中编译好,所以它是一个正确的CPU指令).


优化备注:

下一代码由64位FPC 2.6.2编译

  {$MODE DELPHI}
  {$ASMMODE INTEL}

procedure Test;
asm
        LEA     ECX,[RCX + RSI + $265E5A51]
        NOP
        LEA     RCX,[RCX + RSI + $265E5A51]
        NOP
        ADD     ECX,$265E5A51
        ADD     ECX,ESI
        NOP
end;
Run Code Online (Sandbox Code Playgroud)

生成下一个汇编程序输出: …

delphi assembly fpc basm

3
推荐指数
1
解决办法
382
查看次数

如何检测Windows KN/K/N版本

Delphi Xe,Win7x64

如何检测不完整的Windows版本N或K(Win XpSp3-Win7x64)?没有IE,Wmp.

例:

Function isWinKNedition:bool;
begin
result:=?????
end;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
if isWinKNedition then begin showmessage('This program can work only on full versions OS Windows');Halt;end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi winapi operating-system versioninfo

2
推荐指数
1
解决办法
2207
查看次数

如何在embarcadero delphi 2010中卸载组件?

昨天,我已经在我的embarcadero delphi 2010中安装了专为Delphi 7设计的TPing组件,但今天我发现当我点击"开始"按钮时,这个组件会导致我的应用程序因访问冲突错误而崩溃.

我在互联网上搜索导致访问语音问题的最常见原因,我发现了一些原因,其中包括安装与当前版本不兼容的软件包/组件.因此,我猜这个组件是我的访问冲突错误的原因.

请问您如何卸载组件/包.并恢复在安装过程中自动生成的备份.

delphi delphi-2010

2
推荐指数
1
解决办法
8570
查看次数

访问冲突创建TThread数组

我正在创建一个多线程应用程序,它创建了一个TThread类的动态数组,但对我而言,这是一个谜,它导致错误'访问冲突'到'创建'

代码表格:

Unit UNT_Main;

Interface

Uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UNT_Socks;

Type
  TFRM_Main = Class(TForm)
    Procedure FormCreate(Sender: TObject);
  Private
    Procedure OnUpload(Success: Boolean; SockAction: TSockAction);
  Public
    { Public declarations }
  End;

Var
  FRM_Main: TFRM_Main;
  Socks: Array Of TSocks;
  SA: Array Of TSockAction;

Implementation

{$R *.dfm}

Procedure TFRM_Main.OnUpload(Success: Boolean; SockAction: TSockAction);
Begin
  ShowMessage(SockAction.Response);
End;

Procedure TFRM_Main.FormCreate(Sender: TObject);
Var
  I: Integer;
Begin

  SetLength(Socks, 5);
  SetLength(SA, 5);

  For I := 0 To High(Socks)-1 Do
  Begin
    SA[I].SUrl := 'http://google.com.co';
    Socks[I].Create(SA[I]); …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading indy

2
推荐指数
1
解决办法
734
查看次数

如何按第一个数字排序列表?

我有一个巨大的用户列表,每个用户都有它的ID,但是它的ID数字搞砸了,所以如果有人能告诉我如何按数字对用户进行排序,每个值都有这个表单

1:Stackoverflow
or
145000:Google 
Run Code Online (Sandbox Code Playgroud)

如果我手动这样做,我想我会失去理智,因为有超过700000条记录.谢谢你的时间和帮助....

delphi delphi-7

2
推荐指数
1
解决办法
320
查看次数

如何在main()获得控制权之前编写要执行的代码?

我正在将一个类移植到C++,并且需要在创建我的类的第一个实例之前执行一些初始化代码; 在main()获得控制之前执行代码适合我.如何在C++中做到这一点?

c++

2
推荐指数
1
解决办法
1098
查看次数

Free Pascal中的RawByteString类型

免费的Pascal文档声明该RawByteString类型是在Free Pascal中定义的,但我无法找到它.人们应该期望它在System单元中定义,就像在Delphi中一样,但是当我编译(使用FPC 2.6.2,{$ mode delphi})函数声明时

class function FromAnsi(const S: RawByteString): ByteArray; static;
Run Code Online (Sandbox Code Playgroud)

我得到编译器错误

Error: Identifier not found "RawByteString"
Run Code Online (Sandbox Code Playgroud)

我猜我可以自己声明这个类型:

type
  RawByteString = type AnsiString(CP_NONE);
Run Code Online (Sandbox Code Playgroud)

但我想找到"原生"FPC声明.


谢谢你快速回答.由于我不需要支持FPC 1.x,我需要的解决方法是:

{$IFDEF FPC}
{$IF FPC_VERSION = 2}
  {$IF FPC_RELEASE <= 6}
    type
      RawByteString = AnsiString;
  {$IFEND}
{$IFEND}
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

delphi rawbytestring fpc

2
推荐指数
1
解决办法
722
查看次数

FPC BASM32 MUL bug?

我在将Delphi BASM32代码移植到FPC时遇到了一个问题:

program MulTest;

{$IFDEF FPC}
  {$mode delphi}
  {$asmmode intel}
{$ELSE}
  {$APPTYPE CONSOLE}
{$ENDIF}

function Mul(A, B: LongWord): LongWord;
asm
         MUL    EAX,EDX
end;

begin
  Writeln(Mul(10,20));
  Readln;
end.
Run Code Online (Sandbox Code Playgroud)

上面的代码在Delphi XE中编译并按预期工作; FPC在线输出编译时错误MUL EAX,EDX:

错误:Asm:[mul reg32,reg32]操作码和操作数的无效组合

我正在使用Lazarus 1.4.4/FPC2.6.4 for Win32(当前稳定版)

任何解决方法或修复问题?

delphi freepascal lazarus fpc basm

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

如何在 Sphinx 中创建没有标题的框文本?

Sphinx 中有多个指令可用于创建盒装文本,例如 ex.. note::.. topic::,但它们都包含标题。是否可以创建没有标题的盒装文本?

restructuredtext python-sphinx

2
推荐指数
1
解决办法
224
查看次数

调用delphi程序作为方法

这是我编写得很好的简单代码,但会引发访问冲突.它进入MD程序并且调试器显示一些X和Y值,但在退出程序AV后发生.希望有人能提供帮助.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,  ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

    {$R *.dfm}

procedure MD(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  form1.caption:= inttostr(x)+ ' '+ inttostr(y);
end;

procedure TForm1.FormCreate(Sender: TObject);

function MakeMethod(data, code: pointer): TMethod;
begin
  result.Data:= data;
  result.Code:= code;
end;

begin
  panel1.OnMouseDown:= TMouseEvent(MakeMethod(nil, @MD));
end;

end.
Run Code Online (Sandbox Code Playgroud)

谢谢

delphi freepascal lazarus

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

将while循环转换为for循环

我应该如何将此循环转换为for循环?

const
  TheRightWord = 'hello';
  MaximumTries = 3;
var
  NTries : integer;
  AWord : string;
begin
  NTries := 1;
  AWord := ' ';
  while (AWord <> TheRightWord) and (NTries <= MaximumTries) do
Run Code Online (Sandbox Code Playgroud)

我以为这就是答案:

for (AWord <> TheRightWord) and (NTries <= MaximumTries) do
Run Code Online (Sandbox Code Playgroud)

我必须放在for原地while吗?或者是for i := 1 to 3 do吗?

delphi

-2
推荐指数
1
解决办法
234
查看次数