一个字符串处理的大大的问题(150分)

套牢

Unregistered / Unconfirmed
GUEST, unregistred user!
1000-1111(一字符串,录入)
现在取走1000-1050(一字符串,录入)
剩下1051-1111(一字符串,计算而来),请问这样的计算如何用程序实现
 
同时说明一点
如果录入为'1050'
则剩下的应该为1000-1049,1050-1111
 
没看懂,什么计算规则?
 
其实就是字符串转化成整数
1000-1111就是一个区间
取走1000-1050
自然剩下1051-1111
问题是这个自然处理起来比较麻烦
 
用TStringList串表不是很好实现吗?
声明:
sl: TStrings;
初始化:
sl := TStringList.Create;
加入:
sl.Add('1000');
sl.Add('1001');
......
sl.Add('1111');
查找:
Index := sl.IndexOf('1050');
取出:
sl.Remove('1050');
释放:
sl.Free;
 
1、sql sever数据库中这种Tstrings定义成何种类型?
2、这个Tstrings怎么显示在一个grid中。
 
好象你的题不是这个意思。如果你只是想判断某个区间的数是否已用过的话,可以采用两种方法。
一是仍然用TStringList串表。用过的数加入进去,然后每次判断是否有此数和符合你的区间限制。
if (V>=1000) and (V<=1111) and (sl.IndexOf(IntToStr(V))<0) then
该数合法并未用过...
每次用过一个数就执行
sl.Add(IntToStr(V));
二是定认一个数组array(任意区间,但浪费次源)或位组TBits(必须从0开始的区间,但节省资源)
var
ba: array[1000..1111] of boolean;
使用V=1050
ba[V] := True;
判断是否用效:
if (V>=1000) and (V<=1111) then
if not ba[V] then
该数合法并未用过...
 
原来你在线呀。
1。在SQLserver中是否可以定义数组我不知道。大概可以吧。
2。那真是太容易了呀,动态填充一个TStringGrid不行吗?
 
sql server7.0不支持数组
而且也找不到 (1,2-50)这种形式
 
1、用一数组存储各位的状态 a: array[1000..1111] of boolean;
2、分析输入
2.1看有没有‘-’
2.2如有看前数是不是小于后数
2.3如是折修改a的值
3、输出结果(可以考虑在a[1112]设哨)
3.1从a[1000]开始到a[1111]
如true设标志位,记下start,直到a为false,输出start-(i-1)
3.2记得考虑最后一位的输出

 
没办法,只有自己去处理字符串了,用了STRINGLIST。
实现是没问题了,可就是对于输入的格式有太多的限制,
只有将就了
谢谢!
 
顶部