若 buf:Array [ 0..1024] of char;
也怎么办?!
也怎么办?!
解决方案 »
- 怎样禁止combobox控件的编辑功能,让它只能选择?
- 当客户说:"这个应该很简单,很快的" 大家在做需求时都怎么回答
- 我在用ClientDataSet执行DELETE的时候直接把数据库里的数据删除了,能不能先在缓存里面删掉呢,???
- 本人想要出售自己的一套CRM系统源代码,有意者请进!
- 新安装的组件在打开新工程的时候总是不出现,各位大侠告诉小弟这是咋回事呀
- 怎样在Delphi中格式化硬盘,请教各位高手
- 如何用Delphi编程批量修改一个目录下的文件的后缀名
- 拖拽的控件在哪里调用构造函数呢
- 请问access数据库的boolean 转换成server2000数据库时 数据类型是什么??
- 请教问题
- 如何实现任意文件的复制?
- 何处下载IIS Resourse Kit?
怎样才能将 Edit1.Text发送出去?!
strlcopy(buf,pchar(Edit1.Text),sizeof(buf)-1); NMUDP1.SendBuffer(pchar(Edit1.Text),strlen(Edit1.Text));
总是说类型不兼容: var s:array[1..1024] of char;
s:='12345'; // 错,例子中的也错若下标改成0:
var s:array[0..1024] of char;
s:='123'; // 对
s:=pchar(Edit1.Text); // 不兼容
string:
buf :string;Length(buf)pchar:
buf:array[0..100] of char;
strlen(buf);strlcopy(buf,pchar(Edit1.Text),sizeof(buf)-1); NMUDP1.SendBuffer(pchar(Edit1.Text),length(Edit1.Text)); //上面的错了
bcb兄:好了吗?:-)
buf:Array[1..1024] of char;
str: string;
...
FillChar(buf[1], SizeOf(buf), #0);
Str := Edit1.Text;
Move(str[1], buf[1], Length(str));
...
pTmp : pchar;
begin
pTmp := @buf; strlcopy(pTmp,pchar(Edit1.Text),sizeof(buf)-1);
二: 为什么Array of Char与string没有直接的转换办法?
设计TNMUDP时为什么会用Array of char ?
2.如果你定义str: array[1..1024] of char,下标从1开始,
在如果 array[2.1024] of char ,你说下标从什么地方开始?:)
3.如果要转换不等长的array 和 string ,会有损失
TNMUDP的例子中是buf:Array[1..3] of char,看样子不行,下标要从开始;
buf:array[0..1024] of char与pchar 能不能直接强制转换类型?!
在C语言,这两种类型是完全兼容的,delphi行不行;
PChar(Edit.Text) 为什么不能直接当成Array[0..1024] of char ?
我觉得,pchar 更多的是 提供了一个string (delphi封装字符串)到array of char(c风格字符串),转换的工具,array[0..1024] 与pchar,没必要去转换。
Array of char 与Pchar的关系有点清楚了:
1.与C语言不太一样,两者在C中是完全相容的;
但Delphi的Array of char比PChar复杂一点,
前者可以当成PChar,但后者PChar不能当成前者;因为
Array of char在实现时,比PChar要多几个字节,
标明数组的长度,相当于 (pchar,buffer_len)
就就是为什么TNMUDP.SendBuffer(Array of char,integer);
到了C++Builder就变成了三个参数了:
TNMUDP::SendBuffer(char *,int,int)
多出一个int参数了,其实就是数组长度; 2.NMUDP选Array of char做参数是对的,缓冲区不仅
仅存放字符,所以不选PChar或AnsiString做参数;
SendBuffer(Buff: array of char; length: integer);
可在BCB中用这个函数时,自动跳出的参数是:
(const char *,int buffer_len ,int length)
明白了?!
DELPHI的数组跟C++的数组实现有点差别,C++中对数组的长度不做任何传递
或检查,而DELPHI的数组地址中,前几个字节是数组地址,后4个字节是数组长度,所
以可以猜到,DELPHI数组作为过程参数时,数组的长度仍传递过去,而C做不到
string,缺省是AnsiString,是长串;