DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hfh9801
今日帖子: 1
在线用户: 21
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 snakewu (ss) ★☆☆☆☆ -
普通会员
2004/5/6 9:49:50
标题:
能否给我一个匹配子字符串的算法提示 浏览:1053
加入我的收藏
楼主: 比如:a123bc和123,于是能找到,并且返回第一次出现123的位置,我不想使用pos函数,想自己写一下,能帮我一下吗,如何处理?
----------------------------------------------
ignore,Ctrl+Alt+Del,then begin;is die,but just not die。
作者:
男 snakewu (ss) ★☆☆☆☆ -
普通会员
2004/5/6 9:54:20
1楼: var
  ss,si: string;
  i,j,a:integer;
begin
  a:=0;  
  ss:='a1234b';
  si:='1234';
  for i:=0 to length(ss)-1 do
  begin
    for j:=0 to length(si)-1 do
    begin
      if (ss[i+j]<>si[j]) then break
      else
      if j=(length(si)-1) then          //如果j已于长度减1相等,说明已经比较完si了
        a:=i;                           //将ss中开始位置i赋值给a
      end;
    end;
    Edit1.Text := inttostr(a);
end;

end.

这是我的程序,但是a总是返回0,我想哪里错了,但是又不知道错在那里,能不能帮我改一下啊,谢谢了。。。。。。。。。。。。。。。。。。。。。
----------------------------------------------
ignore,Ctrl+Alt+Del,then begin;is die,but just not die。
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/6 10:14:41
2楼: 字符串数组的索引应该从1开始
  for i:=1 to length(ss) do
  begin
    for j:=1 to length(si) do
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/6 10:16:25
2楼: 高级程序员书上有 这个经典 算法 你可以 按这个算法实现;
BORLAND用的是汇编!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 snakewu (ss) ★☆☆☆☆ -
普通会员
2004/5/6 10:18:54
3楼: 那请问我的程序不知道写的对不对???
to 阿贡:不过可能翻译过来语法要改动。。。。。。。
还有咯,为什莫一定要从索引1开始??
----------------------------------------------
ignore,Ctrl+Alt+Del,then begin;is die,but just not die。
作者:
男 lovedelphi1 (梦之铃) ★☆☆☆☆ -
盒子活跃会员
2004/5/6 10:57:43
4楼: procedure TForm1.Button1Click(Sender: TObject);
var
  ss, si: string;
  i, j, a, s: integer;
  OK: bool;
begin
  a := 0;
  ss := 'a1234b';
  si := '1234';
  for i := 1 to length(ss) do
  begin
     if ss[i] = si[1] then
     begin
        OK := false;
        s := i;
        for j := 1 to length(si) do
        begin
           if si[j] <> ss[s] then
           begin
              OK := true;
              break;
           end;
           inc(s);
        end;
        if(not OK) then
           a := i;
     end;
  end;
  button1.Caption := inttostr(a);

end;
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/6 11:08:32
5楼: 第0个是字符串的标志位!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 snakewu (ss) ★☆☆☆☆ -
普通会员
2004/5/6 11:32:35
6楼:
第0个是字符串的标志位!



to 阿贡:我刚学delphi,不明白您的意思,字符串第0个位置是标志位是什莫意思???
那末例如:TListBox.Items[0],他的索引也从0开始,不是表示的是第一行的字符串?
----------------------------------------------
ignore,Ctrl+Alt+Del,then begin;is die,but just not die。
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/6 11:39:56
7楼: 你记住字符串是特例就行了
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 snakewu (ss) ★☆☆☆☆ -
普通会员
2004/5/6 12:15:24
8楼: 您说的字符串指的ansistring,shortstring,widestring等所有这些字符串类型吗?
如果我想使用标志位的话,有什麽用呢?
按此在新窗口浏览图片
----------------------------------------------
ignore,Ctrl+Alt+Del,then begin;is die,but just not die。
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/6 12:24:48
9楼: 是的
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 fox7899 (fox7899) ★☆☆☆☆ -
盒子活跃会员
2004/5/6 12:48:49
10楼: 标志位一般不用
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行68.35938毫秒 RSS