下面是vb的代码读取一个文件
 NI = 0:    NJ = 1:   NK = 1
   numData = 0
     Do While Not EOF(1)
      Line Input #1, c1
      '------------------------------------------------------
      nDNL = nDNL + 1
      If (nDNL > nDoEventsNumLine) Then
         nDNL = 0
         RTB.Text = c1
         DoEvents
      
         dPB = numTP
         dPB = dPB / 100#
         dVt = numData
         dPB = dVt / dPB
         If dPB > 100 Then dPB = 100
         PBar.Value = dPB
      End If
      '------------------------------------------------------
      arrStr = Split(c1, " ", -1)
      n = UBound(arrStr, 1)
      
      If (n < 1) Then '数组边界
         GoTo LOOP_PORO_NEXT
      End If
      '------------------------------------------------------
      For i = 0 To n
         s1 = Trim(arrStr(i))
         If Len(s1) > 0 Then
            firstCh = i
            Exit For
         End If
      Next i
      If Not (IsNumeric(arrStr(firstCh))) Then
         GoTo LOOP_PORO_NEXT
      End If
      '------------------------------------------------------
      For i = firstCh To n
         If arrStr(i) = "" Then
            GoTo PORO_NEXT
         End If
         '--------------------------------------------------
         NI = NI + 1
         If (NI > NX) Then 'If (NI.GT.NX) Then
            NJ = NJ + 1
            NI = 1
         End If
      
         If (NJ > NY) Then 'If (NJ.GT.NY) Then
            NK = NK + 1
            NJ = 1
         End If
      
         If (NK > NZ) Then  'If (NK.GT.NZ) Then GoTo 200
            'MsgBox "孔隙度Z方向数据超出!"
            Exit Do
            GoTo workErr
            NK = NZ
            NJ = 1
            NI = 1
         End If
         '--------------------------------------------------
         numData = numData + 1
         PORO(NI, NJ, NK) = arrStr(i)
PORO_NEXT:
      Next i
    LOOP_PORO_NEXT:
   Loop
   If numData <> numTP Then
      MsgBox "PORO 数据错误!"
   End If我要在 delphi中实现是这样的:这个文件是一个大文件的一部分!!我可以通过关键字‘pop value’找到这部分文件!!但我还是按照上面的方法读取怎么不对了啊!!这是我写的代码
        assignfile(f,opendialog1.FileName);
        reset(f);
        readln(f,skey);
        skey:=uppercase(skey);
        while sKey = 'POR VALUE' do
        begin            NI := 0;
            NJ := 1;
            NK := 1;
            numData := 0;
            readln(f,c1);
            nDNL := nDNL + 1;
            If nDNL > nDoEventsNumLine Then
            begin
                nDNL := 0;
                application.ProcessMessages ;
                dPB := numTP;
                dPB := dPB / 100;
                dVt := numData;
                dPB := dVt / dPB;
                If dPB > 100 Then dPB := 100;
           End;
           arrstr :=TStringList.Create;
           arrstr.DelimitedText := ' ';
           arrstr.CommaText :=c1;
           //'------------------------------------------------------
           If arrstr.Count-1 < 1  Then  GoTo LOOP_PORO_NEXT;
           //'------------------------------------------------------
           For i := 0 To arrstr.Count-1 do
           begin
                s1 := Trim(arrStr[i]);
                If Length(s1) > 0 Then
                begin
                    firstCh := i;
                    break;                                                  //Exit For
                end;
           end;                                                                  //Next i
          If Not (IsNumeric(arrStr[firstCh])) Then   GoTo LOOP_PORO_NEXT;          //'------------------------------------------------------
           For i := firstCh To arrstr.Count-1  do
           begin
               If arrStr[i] = ''Then  GoTo PORO_NEXT;
              //'--------------------------------------------------
              NI := NI + 1;
              If NI > NX Then
              begin
                   NJ := NJ + 1;
                   NI := 1;
              End;              If NJ > NY Then
              begin
                   NK := NK + 1;
                   NJ := 1;
              End;              If NK > NZ Then
              begin                   break;// exit;                      // Exit Do
                  GoTo workErr;
                  NK := NZ;
                  NJ := 1;
                  NI := 1;
              End;              numData := numData + 1;
              PORO[NI-1][NJ-1][NK-1] := strtofloat(arrStr[i]);
          PORO_NEXT:
          end;                              //Next i        LOOP_PORO_NEXT:
        end;                 //end while
        If numData <> numTP Then showmessage('PORO 数据错误');
难道这样不能从另一个文件读出吗//总是出现:'PORO 数据错误'