2013-05-27 1 views
1

텍스트 파일을 읽는 동안 문제가 있습니다. 기본적으로 텍스트 파일은 각 블록 사이에 blanck 행을 가진 정보 블록으로 구성됩니다. Hier는 내 텍스트의 샘플입니다.해결 방법 런타임 오류 62 ''파일 끝까지 입력 '

FESTWERT FRAUS 
     LANGNAME "bla bla bla" 
     FUNKTION dfgg 
     EINHEIT_W "ü" 
     WERT -9.2654122070312500 
    END 

    KENNFELD KFDWNWCSA 4 4 
     LANGNAME "bla bla bla" 
     FUNKTION FGHK 
     EINHEIT_X "8/kl" 
     EINHEIT_Y "bla" 
     EINHEIT_W "bla" 
     ST/X 1658.0000000000000000 987.0000000000000000 3698.0000000000000000   3520.0000000000000000 
     ST/Y -30.0000000000000000 
     WERT 22.0000000000000000 16.9870000000000000 10.3210000000000000 10.0000000000000000 
     ST/Y 0.0000000000000000 
     WERT 10.0000000000000000 10.0000000000000000 10.0000000000000000 10.0000000000000000 
     ST/Y 45.2500000000000000 
     WERT 10.0000000000000000 10.0000000000000000 10.0000000000000000 10.0000000000000000 
     ST/Y 21.0000000000000000 
     WERT 22.0000000000000000 16.0000000000000000 10.0000000000000000 10.0000000000000000 
    END 

실제로 이러한 블록에서 숫자를 추출하고 싶습니다. 하지만이 오류가 발생합니다 :

Dim fso As New FileSystemObject 
Dim ts As TextStream 
Set ts = fso.OpenTextFile(Name, ForReading) 
Do While Not ts.AtEndOfStream 

strArray = Split(ts.ReadLine, Space(1), 2) ' Extrahieren, was in einer Zeile ist 

If Len(Join(strArray, "")) <> 0 Then 
    If strArray(0) = "KENNFELD" Then 
    SWKNF = True 
    ts.SkipLine 
    ts.SkipLine 
    ts.SkipLine 
    ts.SkipLine 
    ts.SkipLine 
    wertkenfeld = strArray(1) 
    strArray(1) = "" 
    End If 


    If strArray(0) = "END" Then werden 
    If SWKNFL = True Then 
     For P = 0 To X - 1 
     DoCmd.RunSQL ("INSERT INTO Test_DCML_G (XValue,Wert,name) VALUES ('" & Stx(P) & "','" & wert(P) & "','" & wertkenfeld & "');") 
     Next P 
    End If 
    SWKNF = False 
    SWKNFL = False 
    Erase Warray 
    X = 0 
    W = 0 
    Erase Yarray 
    Erase Xarray 
    Erase Stx 
    Erase wert 
    ts.SkipLine ' I get the error in this line 
    End If 
..... 

당신이 날이 문제를 해결하는 데 도움시겠습니까이 내 코드인가? 고맙습니다.

+1

로 기록 될 수 있을까? 이 줄을 호출 할 때 아마도 텍스트 파일의 끝 부분에있을 수 있으며 건너 뛸 곳이 없으므로'SkipLine'을 사용할 수 없습니다. –

+1

그것은 지금 작동합니다 :) thanks – Kaja

답변

2

파일의 마지막 END에 도달하면 건너 뛰기 또는 읽음으로 인해 파일 끝까지 도달하게됩니다.

이동하기 전에 EOF를 확인하기 위해 줄을 건너 뛰거나 읽어야하는 경우 (텍스트 파일이나 레코드 세트 모두) 일반 규칙으로 제안합니다. EOF에 도달하지 않았거나 원하는 행을 찾았는지 테스트하는 조건의 루프를 사용할 수도 있습니다.

당신이 줄을 건너 뛸하는 첫 번째 덩어리는 오류가이 줄을 제거하면 어떤

strReadLine = "" 
    do while not ts.AtEndOfStream and not (strReadLine LIKE "ST/*") 
    strReadLine = ts.readline 
    loop 

안녕