起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: liubin

【结贴】ExtractStrings 问题**

[复制链接]
发表于 2008-10-6 09:52:33 | 显示全部楼层
其实就是用1个字符串暂存值,不停的截取字符串操作
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-6 10:08:24 | 显示全部楼层
水平有限,完全看不懂,您还是根据您理解,用POS和COPY写个能分解 12+33-44的字符串实例吧
回复 支持 反对

使用道具 举报

发表于 2008-10-6 10:14:36 | 显示全部楼层
我也只能说个大概,程序的算法我也不擅长。
1.pos可以找到+或者-号的索引
2。.然后根据这个索引用copy截取字符串
3.然后截掉已经取过的字符串,再做1步骤。直到字符串长度为0;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-6 14:09:34 | 显示全部楼层
procedure TMainForm.Button2Click(Sender: TObject);
var
  i,c,v,Sum: Integer;
  s: string;
begin

  Sum := 0;
  s := '1-22-42+464';

  while s <> '' do
  begin
    c := Pos('+',s);
    v := Pos('-',s);
    if (c < v) and (c <> 0) then
    begin
      Sum := Sum + StrToInt(Copy(s,1,c));
      Delete(s,1,c);
    end;
    if (v < c) and (v <> 0) then
    begin
      Sum := Sum + StrToInt(Copy(s,1,v));
      Delete(s,1,v);
    end;
  end;

  Business.Forms.jsDialogs.ShowMsg(IntToStr(Sum),'');
end;
上面的思路无论怎么调整总是有BUG,您看看这方法是否行的同
回复 支持 反对

使用道具 举报

发表于 2008-10-6 14:16:56 | 显示全部楼层
代码有bug,楼主可以单步调试运行一下。来确定错误的位置。
1、在sum=0处设置断点
2、运行到断点后,按F7单步运行即可
在运行过程中,楼主可以用ctrl+F7来查看变量值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-6 14:23:37 | 显示全部楼层
我说的BUG,我不这种BUG,是方法的局限性,这方法可能决定无法完美实现此需求。也就是7楼的需求,请认真看需求
回复 支持 反对

使用道具 举报

发表于 2008-10-6 14:39:47 | 显示全部楼层
楼主说的局限性是什么?你觉得什么样才能完美呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-6 14:45:28 | 显示全部楼层
Pos只能从左到右取第一个出现的字符,这样只能从左到右截取字符串,例如1+2-3, 1的符号是+还是— 没办法确定 还有首先要比较    c := Pos('+',s)   v := Pos('-',s);  C和V的大小,要从小的开始,因为小的靠近左面,但如果c := Pos('+',s)=0就表示没有+号了,在比较0一定小于任何大于0的数,就会出现问题,您看看14楼的例子,你看看如何改动才能解决上面说的问题
回复 支持 反对

使用道具 举报

发表于 2008-10-6 15:18:33 | 显示全部楼层
------样只能从左到右截取字符串,例如1+2-3, 1的符号是+还是— 没办法确定
2个号都判断一遍,哪个索引小,就是哪个。

Pos searches for Substr within S and returns an integer value that is the index of the first character of Substr within S. Pos is case-sensitive. If Substr is not found, Pos returns zero.
0表示没有找到这个字符,这个是特殊情况,需要加入判断  0是无效的索引
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-8 16:53:24 | 显示全部楼层
我知道Pos返回0是没找到的意思,这个帖子结了吧,我用别的方法搞定了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 17:56 , Processed in 0.041585 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表