String的疑问
2024-09-29 20:09:34
ss[]//var ss:String;
和
Pointer(ss)^
是不是一个意思呢? 答:不是。
ss[]表示第一个字符。如:ss:='abc'
则表示'a'。ss[]=Length(ss);
Pointer(ss)^ 和 @s 也不一样。
就连 cc:PChar
Pointer(cc)^ 和 @cc 也不一样。 应用:
一、发送字符串 或者 Record procedure SendStr(ss:String);
var cds:TCopyDataStruct;hh:HWND;
begin
hh:=FindWindow('TfrmFYErpMsg',nil);
if hh<> then
begin
//cds.dwData:=Handle;可要可不要
cds.cbData:=Length(ss)+;//不能漏掉+
cds.lpData:=AllocMem(cds.cbData);//GetMem(cds.lpData,cds.cbData);可替代
StrCopy(cds.lpData,PChar(ss));
SendMessage(hh,WM_COPYDATA,hh,Cardinal(@cds));
FreeMem(cds.lpData);
end;
end; TRR=Record
a:String[];
b:PChar;//这里注意,不能使用PChar这种长度可变的。
d:Double;
end;
procedure SendRec(aa:TRR);
var cds:TCopyDataStruct;hh:HWND;
begin
hh:=FindWindow('TfrmFYErpMsg',nil);
if hh<> then
begin
cds.cbData:=sizeof(aa);
// cds.lpData:=AllocMem(cds.cbData);//GetMem(cds.lpData,cds.cbData);
cds.lpData:=@aa;
SendMessage(hh,WM_COPYDATA,hh,Cardinal(@cds));
// FreeMem(cds.lpData);不知道怎么要这个???
end;
end; 二、接收 procedure RecordWM(var ARec:TWMCopyData);message WM_COPYDATA; procedure TfrmFYErpMsg.RecordWM(var ARec: TWMCopyData);
var s:String;x:TRR;
begin
//字符串
s:=StrPas(ARec.CopyDataStruct^.lpData);
//Record
x:=TRR(ARec.CopyDataStruct.lpData^);
s:=x.a+#+x.b+#+FloatToStr(x.d);
end;
最新文章
- shell-参数做下标
- 【poj3764】 The xor-longest Path
- Swift方法
- 微信支付-b
- SQL给字段加上统一的某个字符
- 足球3v3心得
- BZOJ 1492: [NOI2007]货币兑换Cash( dp + 平衡树 )
- 【转】使IFRAME在iOS设备上支持滚动
- Python之函数知识
- coursera无法观看视频解决方法
- Sphinx学习笔记(一)
- 在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑
- SQL2005EXPress自动备份
- python 离群点检测
- Your branch is ahead of &#39;origin/master&#39; by 2 commits.
- 神州数码OSPF路由汇总配置
- 性能测试二十三:环境部署之Redis安装和配置
- 单件模式——Head First
- odoo开发笔记:Server+Action服务器动作自动触发执行
- dockerfile介绍