首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

大概讲讲该段程序,该怎么处理

2012-03-03 
大概讲讲该段程序procedure TForm1.Button1Click(Sender: TObject)const arr:array [0..1] of string(s

大概讲讲该段程序
procedure TForm1.Button1Click(Sender: TObject);
const arr:array [0..1] of string=('s55','111');var
  i,j:Integer;
  ss,sl:TStringList;
begin
  ss:=TStringList.Create;
  sl:=TStringList.Create;
  ss.LoadFromFile('d:\111.txt);
  for i:=0 to ss.Count-1 do
  begin
  if sl.IndexOf(ss.Strings[i])=-1 then
  begin
  if ((pos(arr[0],ss.Strings[i])>0) or (pos(arr[1],ss.Strings[i])>0)) then
  j:=3  
  else
  j:=2;
  while j>0 do
  begin
  sl.Add(ss.Strings[i]);
  dec(j);  
  end;
  end;
大概帮我讲讲 红的部分着重讲讲


[解决办法]
这段代码,好像我写的呢,好人做到底,我来详细解释吧:

const arr:array [0..1] of string=('s55','111');
定义一个静态的string字符数组arr,只有2阶并赋值;即arr[0]='s55';arr[1]='111';
当然,如果只是这2项值,此定义可以去掉,把后面的arr[0],arr[1]直接换成s55和111即可
我这样定义是为了数目很多时好扩展维护,直接增加阶数,添加初始值即可;后面就改成循环来判断,如
j:=2;
for k:=low(arr) to high(arr) do
begin
if pos(arr[k],ss.Strings[i])>0 then
begin
j:=3;
brrak;
end;
end

for i:=0 to ss.Count-1 do
循环ss中所有数据项,每行的值是:ss.Strings[i]

if sl.IndexOf(ss.Strings[i])=-1 then
判断sl中有没有ss.Strings[i],没有就返回-1,有的话返回大于等于0值

if ((pos(arr[0],ss.Strings[i])>0) or (pos(arr[1],ss.Strings[i])>0)) then
判断ss.Strings[i]有没有arr[0]或者arr[0]字符;即有没有s55或111;有的话就设置j=3,没有就设置j=2 

while j>0 do
begin
sl.Add(ss.Strings[i]);
dec(j);
end;
根据j的值,循环3次或者2次,实现在s1中添加ss.Strings[i] 3次或者2次;
dec(j);dec是让变量j减1;以便退出循环



热点排行