使用文本文件和数组(需要解释)

时间:2014-11-02 10:14:42

标签: arrays delphi

我正在忙着写一篇11年级的老问题报纸而我的老师没有解释诸如(ipos -1)之类的东西的意义,任何人都可以解释为什么要这样做,因为此刻我很难理解ipos-1和复制和删除功能的作用。代码如下:

procedure TForm1.CreateBookCode1Click(Sender: TObject);
var icount,k,ipos:integer;
begin
  richedit1.Clear;
  richedit1.Lines.Add('Book Title'+#9+'Book Code');
  for k:=1 to icount do
  begin
    ipos := pos(';',arrBooks[k]);
    arrtitle[k]  := copy(arrbooks[k],1,ipos-1);
    delete(arrbooks[k],1,ipos);
    ipos := pos(',',arrbooks[k]);
    arrsurname[k]:= copy(arrbooks[k],1,ipos-1);
    arrcode[k] := copy(arrsurname[k],1,3) +inttostr(k);

    richedit1.Lines.add(arrtitle[k] + #9 + arrcode[k]);
  end;

1 个答案:

答案 0 :(得分:4)

ipos := pos(';',arrBooks[k]); arrtitle[k] := copy(arrbooks[k],1,ipos-1);

这表示"将arrtitle数组的第k个元素设置为arrbooks数组的第k个元素中第一个分号之前的字符串。

换句话说,每个元素的标题是元素的第一部分,即分号前面的位。

从ipos中减去1的原因是ipos是arrbooks数组的第k个元素中分号的位置。从副本中减去一个意味着您不会复制分号。

请注意,此处似乎至少存在两个问题:

1)icount似乎没有初始化。它应该包含arrbooks数组中的元素数。

2)在设置ipos的行中,arrbooks是错误输入的:它有一个大写字母B

delete(arrbooks[k],1,ipos);

这说"从arrbooks数组的第k个元素中删除所有字符,从开头到包括分号(因为ipos指向k&#39 th elemet中的分号) arrbooks数组)。