Delphi的客户端和C#的服务器端,发送字符串,C#好说,有现成的函数实现字符串和byte数组的转换,而且使用各种编码包括Unicode都很方便。可是Delphi怎么把字符串转换成byte数组(当然)呢?因为发送的时候只能发送byte数组啊,还有如果有中文的话就得用Unicode编码,怎么设置呢? 主要是不知道怎么实现Delphi中字符串和byte数组的相互转换,还有怎么用unicode编码~小弟初接触Socket编程,希望有高手解答一下~
解决方案 »
- 关Tcombobox的问题!在线等待!
- 关于findcomponent的问题
- 关于更改access表名的问题
- 招在杭州用delphi的程序员(专职或兼职)
- 关于制作登陆界面的问题。
- cpu占用率是个什么概念? 对机器的速度有什么影响?
- 大虾帮我推荐一个好用的grid控件
- DCOM中所谓的中间层是指哪一个,如何理解?
- Application.CreateForm(TForm1,Form1)和Form1:=TForm1.Create(nil)有什么区别来着。
- 64位win7,Delphi 10 Seattle 下安装uniGUI组件失败,请指教。
- 这个代码可以修改其他程序的listview的节点值,于是乎我想能不能修改一个dbgrid。用 Spy++ 抓了个dbgrid的句柄 测试,未果! 大家伙别忙看看
- 谁帮我看看这个注销代码有什么问题
const
s = 'abcd1234';
var
arr: array of Byte;
i: integer;
s2: string;
begin
//string to byte array
SetLength(arr,Length(s));
CopyMemory(arr,PChar(s),Length(s));
for i := 0 to High(arr) - 1 do
ShowMessage(chr(arr[i])); //byte array to string
SetLength(s2,Length(arr));
CopyMemory(PChar(s2),arr,Length(arr));
ShowMessage(s2);
end;
Ansi_Str: String;
WideChar_Byte_Array: Array of Byte;
iReturn: Integer;
begin
Ansi_Str := '要传输的内容';
//目标字节数 = AnsiCode字数 * Unicode单字的字节数
SetLength(WideChar_Byte_Array, Length(Ansi_Str) * sizeof(WideChar));
iReturn := MultiByteToWideChar(936, 0, PChar(Ansi_Str), Length(Ansi_Str), PWideChar(@WideChar_Byte_Array[0]), Length(Ansi_Str) * sizeof(WideChar));
//iReturn返回的是实际的Unicode字数,所需要根据iRet设置字节数组的有效长度
SetLength(WideChar_Byte_Array, iReturn * sizeof(WideChar)); //释放字节数组
SetLength(WideChar_Byte_Array, 0);
WideChar_Byte_Array := Nil;
end;
buf : array[0..99] of byte;move(str[1],buf[0],length(str));至于编码,谁接收谁转
直接用PChar转的,也一样可以发
帅哥,动态数组也需要手动释放么?我一直以为动态数组是delphi自己释放的