几个关于Delphi变量类型的问题,我给的分不少吧。帮忙拉一下别沉了。 1、如果是WideString,直接用Length就可以了,不用×2。2、应该可以,而且是自动的。例c := ws[1];3、buffer := Pchar(TmpStr); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请您试好以后再回答,但是按你所说,1、我只能保存一半的长度。能解释吗?(别太含糊,那样的话我也不问了。)2、如果是string还勉强,但是widestring按你的方法是不可以的。3、那肯定不对。 length(varWideString)的结果: varWideString := '我的String'; length(varWideString)==8不信你试试。要得到相应AnsiString的长度: var s1: AnsiString; s1 := varWideString; Length(s1);即可。 uses SysUtils;var A: array[0..79] of Char; S: String;begin S := 'Honk if you know Blaise.'; StrPCopy(A, S); Canvas.TextOut(10, 10, string(A));end; 原来widestring把汉字的长度记为1,'a'也为1,谢谢jingpingyi,大家继续 对不起,我承认我没试。不过1、我在用Delphi对Word进行Ole Automation时,里面的变量全是WideString,取Length确实就是这样。你必须确定Length中的参数一定是WideString。2、string本来就可以,WideString的话,可以做个强制类型转化,c := Char(ws[1]),当然有丢失的话,我可不管。3、我看错了,把byte看成了Char。如果这样我觉得用CopyMemory就可以了。FillMemory(@Buffer, 255, 0);CopyMemory(@buffer, Pchar(tmpStr), Length(tmpStr)); (System.pas)function WideCharToString(Source: PWideChar): string;function StringToWideChar(const Source: string; Dest: PWideChar; DestSize: Integer): PWideChar;//至于PWideChar与WideString间的转换,String 与 char 间的转换,你想去吧。 SetFile:TFileStream; TxtContent:WideString; EncryTxt:WideString; TmpTxt1:AnsiString;begin //*************************** TmpTxt1:=TxtContent; //*************************** //SetFile.write(EncryTxt[1],Length(EncryTxt)*2); SetFile.write(EncryTxt[1],Length(TmpTxt1));用上述方法不行呀。当读出数据时已经不够长度了。但用SetFile.write(EncryTxt[1],Length(EncryTxt)*2)则可以。 打开百度首页后,自动输入关键词,如“热卖商品”,并搜索,如何实现? 求一思路,关于监视安装文件的 如何SHOW出两个窗体!~ 那位大侠帮我修改下面这个程序啊,很简单的,就是数据库的增加删除功能(我只有30分了) 为什么我们通常指一件物品会叫做'东西',比如说,这件东西!为什么不叫南北呢? 我今天有病!!!!!!!!!!! 用鼠标点击DBGrid时,如何将DBGrid里的所在列的字段名取出,在线等 如何用delphi实现抓图功能? ziyunpiao1(紫云飘)高手,再次打忧? Fast Report问题? Chart的一个问题 有关SQL的查询语句该怎样写?
1、我只能保存一半的长度。能解释吗?(别太含糊,那样的话我也不问了。)
2、如果是string还勉强,但是widestring按你的方法是不可以的。
3、那肯定不对。
varWideString := '我的String';
length(varWideString)==8
不信你试试。
要得到相应AnsiString的长度:
var s1: AnsiString; s1 := varWideString;
Length(s1);
即可。
var
A: array[0..79] of Char;
S: String;
begin
S := 'Honk if you know Blaise.';
StrPCopy(A, S);
Canvas.TextOut(10, 10, string(A));
end;
1、我在用Delphi对Word进行Ole Automation时,里面的变量全是WideString,取Length确实就是这样。你必须确定Length中的参数一定是WideString。
2、string本来就可以,WideString的话,可以做个强制类型转化,c := Char(ws[1]),当然有丢失的话,我可不管。
3、我看错了,把byte看成了Char。
如果这样我觉得用CopyMemory就可以了。
FillMemory(@Buffer, 255, 0);
CopyMemory(@buffer, Pchar(tmpStr), Length(tmpStr));
function WideCharToString(Source: PWideChar): string;
function StringToWideChar(const Source: string; Dest: PWideChar; DestSize: Integer): PWideChar;//至于PWideChar与WideString间的转换,String 与 char 间的转换,你想去吧。
TxtContent:WideString;
EncryTxt:WideString;
TmpTxt1:AnsiString;
begin
//***************************
TmpTxt1:=TxtContent;
//***************************
//SetFile.write(EncryTxt[1],Length(EncryTxt)*2);
SetFile.write(EncryTxt[1],Length(TmpTxt1));
用上述方法不行呀。当读出数据时已经不够长度了。
但用SetFile.write(EncryTxt[1],Length(EncryTxt)*2)则可以。