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程序员哭泣的功能! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |