2014-11-02 56 views
2

我忙于研究旧的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

您知道如何查找文档?复制已记录。 – 2014-11-02 14:55:20

回答

4

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

这是说“所设定的arrtitle阵列的第k个元素,是在的第k元素的所述第一分号之前的字符的字符串arrbooks阵列。

换句话说,每个元件的标题是所述元件的第一部分,分号之前的位。

其原因从知识产权局减去1是知识产权局是分号的位置在k't hr元素的arrbooks数组。从副本中减去一个意味着您不要复制分号。

注意,似乎至少有两个问题在这里:

1)ICOUNT似乎并不被初始化。它应该包含arrbooks数组中的元素数量。

2)在用于设置知识产权局的线,arrbooks是错误类型的:它有一个资本乙

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

这是说“从arrbooks阵列的第k个元素中删除所有字符从开始到分号(因为ipos指向arrbooks数组的第k个元素中的分号)。

+0

非常感谢您。真的帮助我很多:) – Lucas999 2014-11-02 10:26:31

+2

不客气。感谢peop的标准方式他们在堆栈溢出的答案是upvote他们。选择最能帮助你的答案,并通过点击投票按钮下方的大勾来“接受”答案。 – GreenAsJade 2014-11-02 10:27:25