潜在的文件处理逻辑错误

时间:2016-03-16 12:54:29

标签: pascal

procedure TForm2.Button1Click(Sender: TObject);

var

count:integer;

filename:string;

begin

  count:=1;

  repeat

    filename:= 'questions/question '+ IntToStr(count)+'.txt';

    if not fileexists(fileName) then

    begin

      Assignfile (FileQ, filename);

      ReWrite(FileQ);

      CloseFile(FileQ);

    end;

    Assignfile (FileQ, filename);

    Append(FileQ);

    WriteLn (FileQ, Question_Enter);

    WriteLn (FileQ, OptionA);

    WriteLn (FileQ, OptionB);

    WriteLn (FileQ, OptionC);

    WriteLn (FileQ, OptionD);

    CloseFile(FileQ);

    count := count + 1;

  until count > 5;

end;

因此,使用此算法的想法是,用户可以通过在单独的编辑框中输入问题和选项,然后按一个按钮将文本块发送到文本文件来添加他们自己的多项选择问题和答案。该算法目前生成5个完全相同的文本文件(除了'question1,question2 .. to question5'之外的名称)。我希望它只生成一个带有信息的文本文件,但要增加文本文件的名称,以便下次添加问题时,文本文件称为“question2”,内容完全不同等等。我很抱歉,如果这是一个非常愚蠢的问题,或者它太模糊,我也不确定我是如何格式化代码块的。

1 个答案:

答案 0 :(得分:0)

编写标记,以便在阅读结果时识别问题,例如用每个问题加前缀!或者@。

然后阅读

n:=0;              // nr of questions
while not eof do
  begin
    readln(f,s);
    if (length(s)>0) and (s[1]='!') then
      begin        
        inc(n);
        delete(s,1);
        storenewquestion(n,s);
      end
    else
     begin
       storenewanswer(n,s);
     end;
   end;