问大家个比较简单的问题。 (150分)

  • 主题发起人 主题发起人 tgdjw
  • 开始时间 开始时间
T

tgdjw

Unregistered / Unconfirmed
GUEST, unregistred user!
1、有这样一个问题:
有一个列表,其中里面的内容格式如下:
003_01
003_02
003_03
004_01
005_01
006_01
006_02
……
要求根据上面的列表列出前三位相同的号码及数目的列表如下:
003-3 //代表003有3个
004-1
005-1
006-2
……
请问各位如何做?谢谢
2、还有一个问题
有这样一个列表,内容如下:
001_00
002_00
003_00
003_01
003_02
003_03
004_00
006_00
008_00
008_01
009_00
…..
所有都是按照前三位的序号排列,前三位相同的可能后两位不同。不过在整个列表中可能缺少某些序号,比如其中缺少:005_00,007_00,请问如何判断并找出来前三位缺少的序号来(这些缺少的默认后两位为00)。


 
晕,没人有耐心做吗?不够可再加分
 
你要用主从表去解决,我现在也在做类似的功能数据库
 
谢谢两位,不过我这个只是一个文件名列表,不是用数据库。
 
如果你的文件名是有顺序的,就是说不存在
003_01
003_02
004_01
003_03
这样的情况,就很好办,用一个变量,如果文件后前三位相同,变量加1就行了。
如果上是像上面那样的我想只有导入数据库中用group by substring(wjm,1,3)的形式了。
建议用第二种方式。
 
003_00
003_01
003_02
003_03

不会出现这种情况吧
003_00
003_01
003_02
003_03
003_07
 
{
第一个问题的解决方案
先将这些文件名保存到一个 TStringList 中
然后调用这个过程, 则 D 中就是你要的结果
}
procedure Q1(S, D: TStringList);
var
i, n: Integer;
sTemp: String;
begin
S.Sort; //对原始列表进行排序
D.Clear; //清空返回的列表
for i := 0 to S.Count - 1 do
begin
try
sTemp := Copy(S.Strings, 1, 3);
if D.Values[sTemp] <> '' then
n := StrToInt(D.Values[sTemp]) + 1
else
n := 1;

D.Values[sTemp] := IntToStr(n);
except
raise Exception.Create('无效的数据:' + S.Strings);
end;
end;

//将列表正的内容从 999=9 的格式整理成 999_9 的格式
for i := 0 to d.Count - 1 do
D.Strings := D.Names + '-' + D.Values[D.Names]
end;

{
第二个问题的解决方案
先将这些文件名保存到一个 TStringList 中
然后调用这个过程, 则 D 中就是你要的结果
}
procedure Q2(S, D: TStringList);
var
i, j, n, m: Integer;
sTemp: String;
begin
S.Sort; //对原始列表进行排序
D.Clear; //清空返回的列表
n := 0;
for i := 0 to S.Count - 1 do
begin
try
sTemp := Copy(S.Strings, 1, 3); //获得前三个数
m := StrToInt(sTemp);
for j := n + 1 to m - 1 do
D.Add(StringReplace(Format('%3d_00', [j]), ' ', '0', [rfReplaceAll]));
n := m;
except
raise Exception.Create('无效的数据:' + S.Strings);
end;
end;
end;

 
谢谢放飞,程序没问题,等第二个问题结束一起给分

这个文件名列表是顺序的,不存在:
003_01
003_02
004_01
003_03
而且也不可能有什么
003_00
003_01
003_02
003_03//后面如果没有003_04,则下面就是004_01
003_07 //不会有

再谢谢各位了

 
谢谢各位问题已经解决。
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部