我正在忙着写一篇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;
答案 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数组)。