大家好,今天我在网上搜到提高统计个数的高效的文章,如下:
————————————
function CountSubStr(const SubStr, Source: string): Integer; // 注意,必须加const或者var关键字
var
i, n, len1, len2: Integer;
begin
result := 0;
i := 1;
len1 := Length(SubStr);
len2 := Length(Source)-len1+1;
while (i <=len2) do
begin
showmessage(inttostr(length(string(@Source[i]))));
n := pos(SubStr, string(@Source[i])); // 这里的技巧是高效的关键, 直接将上一次找到的位置作为字符串的起始传入pos函数
if n > 0 then
begin
inc(result);
inc(i, n+len1-1);
end
else
break;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(CountSubStr('12','12345129')));
end;
——————————————
对string(@Source[i])这句不是很理解,明明是STRING类型,怎么变成数组型了,由于本人学DELPHI只是刚起步,望前辈指点一二。
————————————
function CountSubStr(const SubStr, Source: string): Integer; // 注意,必须加const或者var关键字
var
i, n, len1, len2: Integer;
begin
result := 0;
i := 1;
len1 := Length(SubStr);
len2 := Length(Source)-len1+1;
while (i <=len2) do
begin
showmessage(inttostr(length(string(@Source[i]))));
n := pos(SubStr, string(@Source[i])); // 这里的技巧是高效的关键, 直接将上一次找到的位置作为字符串的起始传入pos函数
if n > 0 then
begin
inc(result);
inc(i, n+len1-1);
end
else
break;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(CountSubStr('12','12345129')));
end;
——————————————
对string(@Source[i])这句不是很理解,明明是STRING类型,怎么变成数组型了,由于本人学DELPHI只是刚起步,望前辈指点一二。
解决方案 »
- delphi 读取注册表问题
- 问一个文件操作(读写)的问题
- ADO 的Lookup Field 问题
- 100分求助!XDJM,谁有Enlib3.0 for d7 或者知道哪儿可以下载!在线等待!
- 文件存放目录问题
- ClassType的问题
- 救命呐!!!!!!!!!救命呐!!!!!!!!!救命呐!!!!!!!!!
- Delphi+SQLserver2000PE的几个简单问题!
- 关于privated,published,protected 的区分
- 怎样在sql server 2000 中取得存储过程和扩展存储过程的返回值!谢谢!
- 这段代码错在哪了[改变任务栏上的"开始"按钮的文本]
- 在线等类型转换问题!!在线!!!
char:单字节字符;
pchar:字符类型指针;
string:字符串类型(其实是一种动态字符数组,是动态数组的话,就可以用一个指针来指向这个数组(其实此时的STRING类型的变量相当于一个隐含的指针了:),当然可以取其中某个字符的地址,通过指针方式访问字符串中某个字符了。呵呵~~)