请问下面的函数应该怎样调用,小弟刚学不不久,请高手帮忙~~,谢谢
function LimitStringCast(const Value:String;
var LimitNum:integer;
const StartPos:integer=1):string;
var
iPos:Integer;
iLen:Integer;
iLimitNum:Integer;
tmpStr:String;
begin
iPos:=StartPos;
iLen:=Length(Value);
if iPos>iLen then
begin
Result:= '';
exit;
end;
if LimitNum>iLen-iPos+1 then LimitNum:=iLen-iPos+1;
iLimitNum:=LimitNum+1;
if iLimitNum>iLen-iPos+1 then iLimitNum:=LimitNum;
//取得最大长度子串
Result:=Copy(Value,iPos,LimitNum);
if iLimitNum<>LimitNum then
Begin
tmpStr:=Copy(Value,iPos,iLimitNum);
//取得最大长度+1,用意在于判断是否最后取的是汉字的前一半
//下面是使用转换成Unicode后的字串长度来做判断的
if Length(WideString(tmpStr))=Length(WideString(Result)) then
begin
//可能存在半个汉字
//最后一个是汉字的高字节,
//因为不能超最大长度,
//所以在这里宁可少取一个字符
if LimitNum>1 then Result:=Copy(Value,iPos,LimitNum-1);
end;
end;
end;
function LimitStringCast(const Value:String;
var LimitNum:integer;
const StartPos:integer=1):string;
var
iPos:Integer;
iLen:Integer;
iLimitNum:Integer;
tmpStr:String;
begin
iPos:=StartPos;
iLen:=Length(Value);
if iPos>iLen then
begin
Result:= '';
exit;
end;
if LimitNum>iLen-iPos+1 then LimitNum:=iLen-iPos+1;
iLimitNum:=LimitNum+1;
if iLimitNum>iLen-iPos+1 then iLimitNum:=LimitNum;
//取得最大长度子串
Result:=Copy(Value,iPos,LimitNum);
if iLimitNum<>LimitNum then
Begin
tmpStr:=Copy(Value,iPos,iLimitNum);
//取得最大长度+1,用意在于判断是否最后取的是汉字的前一半
//下面是使用转换成Unicode后的字串长度来做判断的
if Length(WideString(tmpStr))=Length(WideString(Result)) then
begin
//可能存在半个汉字
//最后一个是汉字的高字节,
//因为不能超最大长度,
//所以在这里宁可少取一个字符
if LimitNum>1 then Result:=Copy(Value,iPos,LimitNum-1);
end;
end;
end;
解决方案 »
- delphi中调用vb里的winsock控件该怎么做呀?能说明具体点嘛?谢谢!
- c/s结构,b/s结构的选择,急急急……
- 请大侠们指点迷津,请教编写防火墙的实现思路和相关知识
- ◆◆怎样实现这样的功能◆◆
- 如何写一个IE插件!
- 请教各位大虾,如何用ADOTable实现象TTable的setkey,gottokey 这样的定位的
- 安裝了兩個Win98(簡体和繁体)以前是簡体, 安裝繁体后, 系統啟動時系統選擇菜單沒有以前簡体選項,怎么辦??急!!!
- 请教如何实现倒入注册表文件及屏蔽掉任务栏上的鼠标右键
- 如何将一个窗体从彻底从内存中删除?
- "我是小新"请进(一个三层服务端的问题)
- 怎样取XML文件中的值?
- 将word嵌程序后,在win2000中设置字体时报:“未指定的错误”
LimitNum:integer;ShowMessage(LimitStringCast('abc, LimitNum))
showmessage(limitStringCase('asdsdfsdf'),3)
var LimitNum:integer;
const StartPos:integer=1):string;
第一个参数是一个传值参数,只要把传进一个字符串就ok,第二个参数是传址参数,必须在本地声明一个integer类型的变量传进去,第三个参数是可选择的参数,你可以传,也可以不传,如果不传,参数值
在该函数中会默认为1
Delphityro(不吃腥的猫)
不好意思 ,我在算分的时候没看到,所以没给你加分,请谅解,下次一定给我多一点......