我准备用copy函数复制一个字符串的一部分,如下:
strN:=copy(str,80,140)
我发现随着str的不同有时候返回的是乱码,有时候是一个字符串。
我怀疑是不是因为str是一个汉字字符串,所以才出现这个问题,
如果是这个原因引起的,您有什么办法能让返回的都是正常的字符串吗?
strN:=copy(str,80,140)
我发现随着str的不同有时候返回的是乱码,有时候是一个字符串。
我怀疑是不是因为str是一个汉字字符串,所以才出现这个问题,
如果是这个原因引起的,您有什么办法能让返回的都是正常的字符串吗?
解决方案 »
- ||||||||复旦大学老师给我出的题目|||请教|||||||||关于多线程
- 问一个很Simple的问题,类是什么时候创建的?
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)' 怎么用,在线等!
- 使用TADOQuery如何在运行完之后关闭连接?
- 一个delphi7.0开发的问题 ﹐很有挑战性……..
- DELPHI调用OLE函数时默认参数的写法? 欢迎抢分喽
- 关于概率统计?
- 如何在sql语句中实现对日期型变量的操作
- 使用locate 出现问题,请高手指教。
- 如何用程序控制区域设置(或国家设置)?
- 求关于如何根据ClientDataSet.Delta提交数据的函数
- 如何将一个目录(包括子目录和文件)做成一个索引文件,只存储树关系,然后还通过索引再恢复成树TreeView!!!
直接把str定义为WideString
nString: String;
iStart, iLength: Integer;
begin
nString := Edit2.Text;
iStart := 1;
iLength := 4;
if Windows.IsDBCSLeadByte(Byte(nString[iStart + iLength])) then
Edit3.Text := Copy(nString, iStart, iLength - 1)
else
Edit3.Text := Copy(nString, iStart, iLength)
end;
你看看会有帮助的:
procedure TRollCaption.SetValue;
var i: Integer;
j,num:integer;
s:string;
begin
i:= 0;
with ado do
begin
Close;
SQL.Clear;
SQL.Add('select top '+intToStr(iNum)+'AL_ID, AL_Title from ArticleList order by Al_ID DESC');
Open;
while Not Eof do
begin
str[i].Info:= FieldByName('AL_Title').AsString;
s:= FieldByName('AL_Title').AsString;
if Length(str[i].Info) > 36 then
begin
num:=0;
for j:=1 to 36 do
begin
if ord(s[j]) >128 then
num:=num+1;
end;
if (num mod 2) =0 then
lab[i].Caption:= Copy(s,1,36)+'...'
else
lab[i].Caption:= Copy(s,1,35)+'...';
end
else
lab[i].Caption:= str[i].Info;
str[i].Link:= FieldByName('AL_ID').AsString;
lab[i].Hint:= str[i].Link;
inc(i);
Next;
end;
end;
end;