我可以在While语句中使用If语句吗?

时间:2013-10-23 00:29:30

标签: delphi if-statement while-loop delphi-7

while not eof(MyFile) do
begin
  Readln(MyFile,sLine);
  iCheck := pos('*',sLine);

  if iCheck >= 0 then
    K := K + 1;
  else
    K := 1;
  sLine := sArrayParty[K];
end;

K是我的反击。 MyFile设置为文本文件。

我正在尝试在while语句中运行if语句,以检查读取到sLine的行中是否有*。如果是这样,我希望我的计数器递增,从而将以下文本放入数组的下一个索引。所以基本上我有一个文本文件,信息由*分隔为分隔符,我希望每条信息都填充一个新索引。但每当我把if语句放入。时,delphi才会发挥作用。

3 个答案:

答案 0 :(得分:6)

您的代码中存在明确的语法错误,编译器会准确地解释它是什么:

[DCC Error] Unit1.pas(22): E2153 ';' not allowed before 'ELSE'

请阅读错误消息中包含的字词,然后移除;之前的else

if iCheck > 0 then
   K := K + 1
else
  K := 1;    

Unit1.pas之后括号中的数字(在我的示例中,(22)是编译器停止工作的确切行号,因此{{1}之前的行将是第21行。编辑器窗口底部的行号告诉您哪一行是清楚的。

答案 1 :(得分:1)

如果没有''那么pos函数将返回0, 如果有''那么它将返回第一个出现位置。

如果iCheck> = 0则

如果iCheck>

应更改为 0然后

答案 2 :(得分:0)

我记得我们可以将字符串分配给字符串列表并将字符串列表的分隔符属性分配给'*'

即。 strlst.delimiter:='*'; strlst.text:= sline;

所以你可以让每个字符串遍历strlst ......

(我用这个很久以后,我现在没有delphi来测试它,请纠正我,如果有什么不对的话)