惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
S
Securelist
Know Your Adversary
Know Your Adversary
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
W
WeLiveSecurity
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
博客园 - Franky
S
Security Affairs
博客园 - 司徒正美
V
V2EX
K
Kaspersky official blog
T
Threatpost
NISL@THU
NISL@THU
博客园 - 叶小钗
Help Net Security
Help Net Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
小众软件
小众软件
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Last Week in AI
Last Week in AI
Jina AI
Jina AI
爱范儿
爱范儿
罗磊的独立博客
N
News and Events Feed by Topic
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint

博客园 - Haozes

新Blog 拼写检查算法 Golang 版 Windbg 离线调试.Net 程序入门 (译)你必须知道的位运算技巧 Low Level Bit Hacks You Absolutely Must Know Windows 下 命令行增强工具 WPF Layout & Image异步加载 几篇文章了解编译原理 WPF Binding Validation 数据验证 WPF 实现Loading效果 推荐一个.NET 命令行参数Parser 库 常用开发工具介绍 使用.Net Memory Profiler 分析.Net程序内存泄露 使用Mdbg.exe 调试.Net 程序 WPF 多语言方案 .Net 2 Tip :捕获CSE和Thread.Timer与Thread.Sleep比较 使用CSharp Driver操作Mongodb介绍 使用Python操作MSSQL数据库. 运行.Net4.0程序是否要安装之前的.Net版本 javascript Disable <div> or other tag in Other Browser like FF,Chrome
Delphi 无类型参数传递动态数组和静态数组
Haozes · 2010-12-01 · via 博客园 - Haozes

procedure TForm1.btn1Click(Sender: TObject);
var
verifyMsg :
array[0..48] of Char; //定长数组
signedLen : Integer;
verfyFile : TFileStream;
str :
string;
len : Integer;
begin
len :
= 48;
str :
= 'hello world';

FillChar(verifyMsg[

0], len, 0);
// OK
// FillChar(verifyMsg, len, 0);

CopyMemory(@verifyMsg[

0], PChar(@str[1]), Length(str)); //要从str[1] 开始copy
// OK
// CopyMemory(@verifyMsg, Pointer(str), Length(str)); //str pointer pchar都可以
// OK
// CopyMemory(@verifyMsg, @str[1], Length(str)); //要从str[1] 开始copy

verfyFile :

= TFileStream.Create('c:\\test.data', fmCreate or fmShareDenyRead);// 方法1 Ok
verfyFile.Write(verifyMsg[
0], Length(verifyMsg));
// 方法 2 OK
// verfyFile.Write(PChar(@verifyMsg[0])^, Length(verifyMsg));
// 方法 3 OK
// verfyFile.Write(verifyMsg, Length(verifyMsg));// 测试写入字符串
// 方法1 OK
// verfyFile.write(PChar(str)^,length(str));
// 方法 2 wrong
// 写入内容是错误的 可能是str的内部结构导致
// verfyFile.write(str, length(str));
// 方法 3 OK
// verfyFile.write(str[1], length(str));
// 方法 4 OK
// verfyFile.write(Pointer(str)^,length(str));

freeAndNil(verfyFile);

end;procedure TForm1.btn2Click(Sender: TObject);
var
verifyMsg :
array of Char; //动态数组
signedLen : Integer;
verfyFile : TFileStream;
str :
string;
len : Integer;
begin
len :
= 48;
str :
= 'hello world';
SetLength(verifyMsg, len);
// Error FillChar 参数不是指针,如下这行所以是错的.
// FillChar(verifyMsg, len, 0);
FillChar(verifyMsg[
0], len, 0);// OK 接收参数是指针
CopyMemory(@verifyMsg[
0], @str[1], Length(str));
// 要从str[1] 开始copy
// CopyMemory(verifyMsg, PChar(@str[1]), Length(str));
verfyFile :
= TFileStream.Create('c:\\test2.data', fmCreate or fmShareDenyRead);// 方法 1 OK 接收参数是无参类型
// verfyFile.Write(PChar(@verifyMsg[0])^, Length(verifyMsg));
// 方法 2 OK 接收参数是无参类型
verfyFile.Write(verifyMsg[
0], Length(verifyMsg));

freeAndNil(verfyFile);

end;