加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何交换指针?

发布时间:2020-12-15 09:49:45 所属栏目:大数据 来源:网络整理
导读:如何在Delphi中有效地交换指针?我试图交换整数类型的指针.以下示例有效,但是当使用64位编译时,I2为0. program Project11;{$APPTYPE CONSOLE}{$R *.res}uses System.SysUtils;procedure Swap(const P1,P2);asm{$if defined(CPUX86)} xchg ecx,[eax] xchg ecx
如何在Delphi中有效地交换指针?我试图交换整数类型的指针.以下示例有效,但是当使用64位编译时,I2为0.

program Project11;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

procedure Swap(const P1,P2);
asm
{$if defined(CPUX86)}
  xchg ecx,[eax]
  xchg ecx,[edx]
  xchg [eax],ecx
{$else}
  xchg rcx,[rax]
  xchg rcx,[rdx]
  xchg [rax],rcx
{$endif}
end;

var
  I1,I2: Integer;

begin
  I1 := 19;
  I2 := 564;

  WriteLn('Swapping..');

  WriteLn('I1: '+I1.ToString());
  WriteLn('I2: '+I2.ToString());

  Swap(I1,I2);

  WriteLn('I1: '+I1.ToString());
  WriteLn('I2: '+I2.ToString());

  ReadLn;
end.

解决方法

我是这样做的:

type
  TGeneric = class
  public
    class procedure Swap<T>(var Left,Right: T); static;
  end;

class procedure TGeneric.Swap<T>(var Left,Right: T);
var
  temp: T;
begin
  temp := Left;
  Left := Right;
  Right := temp;
end;

这可用于交换任何类型的值.一种能让任何Java程序员哭泣的功能!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读