Edit1->Text = (int)(void*)cds1;
DataSource1->DataSet = (TDataSet*)(void*) Edit1->Text.ToInt();
这样转换是可以的
但是地址仅限于本进程内,本EXE内部的指针值
delphi语法
控件转为指针
var
ptr: Pointer;
cds1: TClientDataSet;
ptr := Pointer(cds1);
Edit1.Text := System.SysUtils.IntToStr(System.Integer(ptr));
数字转为控件指针
var
pt:Pointer;
begin
//方法一
pt:=System.Pointer(StrToInt(Edit1.Text));
// DataSource1.DataSet := pt;
DataSource1.DataSet := TDataSet(pt);
//方法二
DataSource1.DataSet := System.Pointer(StrToInt(Edit1.Text));