|
| Autor |
Nachricht |
Semmelhamster Newbie

Anmeldedatum: 24.02.2009 Beiträge: 10
|
Einlesen hinter Dateiende
Verfasst am: 26.02.2009, 15:40 |
|
|
Hallo kann mir vielleicht jemand helfen.
Ich soll ein Programm erstellen das Messungen von Motherboardkomponenten auswertet.
Ich lese aus einer Protokolldatei und nach dem Begriff "FAIL}" der kennzeichnet,
ob die Messungen fehlerhaft sind. Zu Beginn lese ich die Komponenten über eine Textdatei
in ein Array ein. Falls in der eingelesen Zeile außer Fail} auch noch eine Komponente enthalten
ist wird die Sourcecodedatei die die Protokolldatei erstellt und ebenfalls zeilenweise eingelesen
und in eine Variable gespeichert. Wenn die Komponente mit der Fehlermessung im Sourcecode
gefunden wird sollen über die Methode append und einem Select Case unterschiedliche Messungen
für diese Komponente eingefügt werden um heraus zu finden welche Einstellungen zu einem Erfolg
der Messungen führen.
Lange Rede, kurzer Sinn, in der fett markierten Zeile erhalte ich immer den Laufzeitfehler 62:
Einlesen hinter Dateiende.
Wahrscheinlich ist da auch der ein oder andere syntaktische Fehler, kann mir trotzdem jemand weiter
helfen? Ich poste jetzt einfach mal den ganzen Code:
Dim break As String
Dim protocolline As String
Dim sourceline As String
Dim sourceall As String
Dim all As String
Dim componentlist(953) As String
Dim componentpath As String
Dim sourcepath As String
Dim newsourcepath As String
Dim counter As Integer
Dim compare As Integer
Dim comparecomponents As Integer
Public fso As New FileSystemObject
Dim tstream As TextStream
Dim newtstream As TextStream
Private Sub cmdAnalyze_Click()
componentpath = "irgendwas"
sourcepath = "irgendwas"
newsourcepath = "irgendwas"
counter = 0
Set tstream = fso.OpenTextFile(componentpath, ForReading, False)
Do Until tstream.AtEndOfStream
componentlist(counter) = tstream.ReadLine
counter = counter + 1
DoEvents
Loop
tstream.Close
break = Chr$(13) + Chr$(10)
CommonDialog1.Filter = "Protokolldateien(*.mdl)|*.MDL"
CommonDialog1.ShowOpen
Set tstream = fso.OpenTextFile(CommonDialog1.FileName, ForReading, False)
Do Until tstream.AtEndOfStream
protocolline = tstream.ReadLine
search protocolline, sourcepath, compare, comparecomponents, componentlist(), sourceline, sourceall, break
all = all & protocolline & break
DoEvents
Loop
tstream.Close
Set tstream = fso.OpenTextFile(newsourcepath, ForWriting, True)
tstream.Write sourceall
tstream.Close
Text1.Text = all
Text2.Text = sourceall
End Sub
Sub search(protocolline As String, sourcepath As String, compare As Integer, comparecomponents As Integer, componentlist() As String, sourceline As String, sourceall As String, break As String)
Set newtstream = fso.OpenTextFile(sourcepath, ForReading, False)
compare = InStr(protocolline, "FAIL}")
If compare <> 0 Then
For i = 0 To 953
comparecomponents = InStr(protocolline, componentlist(i))
If comparecomponents <> 0 Then
Do Until newtstream.AtEndOfStream 'Or sourceline = "End Sub#"
sourceline = newtstream.ReadLine
sourceall = sourceall & sourceline & break
compare = InStr(sourceline, componentlist(i))
If compare <> 0 Then
sourceline = newtstream.ReadLine
sourceall = sourceall & sourceline & break
sourceline = newtstream.ReadLine
sourceall = sourceall & sourceline & break
sourceline = newtstream.ReadLine
sourceall = sourceall & sourceline & break
append componentlist(i), sourceall, break
End If
DoEvents
Loop
End If
Next i
End If
newtstream.Close
End Sub
Sub append(component As String, sourceall As String, break As String)
Select Case (componentlist(i))
Case "A1152_1"
sourceall = sourceall & " Text " & Chr(34) & "A1152_1== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "250mV DC=1.000 Delay=2mS MR=1KOhm Tol=+-5 A= (P3V3P_STBY) B= (CPU_CATERR_L)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1152_1== WIDA_4XS_1K0_J_W06&" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "250mV DC=1.000 Delay=2mS MR=1KOhm Tol=+-7 A=(CPU_CATERR_L) B=(P3V3P_STBY)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1152_1== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "250mV DC=1.000 Delay=1mS MR=1KOhm Tol=+-3 A=(CPU_CATERR_L) B=(P3V3P_STBY)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1152_1== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "250mV DC=1.000 Delay=3mS MR=1KOhm Tol=+-5 A=(CPU_CATERR_L) B=(P3V3P_STBY)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1152_1== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "250mV DC=1.000 Delay=1mS MR=1KOhm Tol=+-5 A=(CPU_CATERR_L) B=(P3V3P_STBY)" & Chr(34) & break
sourceall = sourceall & break
Case "A1151_4"
sourceall = sourceall & " Text " & Chr(34) & "A1151_4== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "50mV DC=2mS DELAY=20mS MR=1KOhm TOL=+-5 A=(CPU1_THERM_L) B=(P3V3P_STBY)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1151_4== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV" & Chr(34) & "50mV DC=2mS DELAY=20mS MR=1KOhm TOL=+-7 A=(P3V3P_STBY) B=(CPU1_THERM_L)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1151_4== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV " & Chr(34) & "50mV DC=2mS DELAY=20mS MR=1KOhm TOL=+-3 A=(P3V3P_STBY) B=(CPU1_THERM_L)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1151_4== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV " & Chr(34) & "50mV DC=1mS DELAY=20mS MR=1KOhm TOL=+-5 A=(P3V3P_STBY) B=(CPU1_THERM_L)" & Chr(34) & break
sourceall = sourceall & break
sourceall = sourceall & " Text " & Chr(34) & "A1151_4== WIDA_4XS_1K0_J_W06" & Chr(34) & break
sourceall = sourceall & " SV " & Chr(34) & "50mV DC=3mS DELAY=20mS MR=1KOhm TOL=+-5 A=(P3V3P_STBY) B=(CPU1_THERM_L)" & Chr(34) & break
sourceall = sourceall & break
End Select
End Sub
Private Sub cmdBeenden_Click()
End
End Sub
[b]
Zuletzt bearbeitet von Semmelhamster am 02.03.2009, 08:54, insgesamt einmal bearbeitet |
|
| |
|
 |
Zano Newbie

Anmeldedatum: 31.01.2009 Beiträge: 17
|
Verfasst am: 26.02.2009, 15:46 |
|
|
| kann man line input mehrmals in einem schleifendurchlauf benutzen? |
|
| |
|
 |
Semmelhamster Newbie

Anmeldedatum: 24.02.2009 Beiträge: 10
|
Verfasst am: 26.02.2009, 15:54 |
|
|
| ja ich kann ja auch den Inhalt der Protokolldatei in einer Textbox ausgeben |
|
| |
|
 |
Semmelhamster Newbie

Anmeldedatum: 24.02.2009 Beiträge: 10
|
Verfasst am: 02.03.2009, 09:00 |
|
|
Ich hab jetzt viel ausprobiert und festgestellt das bei der Überprüfung auf das
Dateiende irgendwo ein Fehler passiert. Jedes Mal wenn ich versuche die Datei
einzulesen macht das Programm überhaupt nichts.
In der letzten Zeile der Datei die ich einlese steht "End Sub", das kommt aber
mehrmals in der Datei vor sodass ich die Datei bearbeitet habe und "End Sub#",
sonst würde das Programm früher mit dem Einlesen aufhören
daraus gemacht habe.:
Do Until newtstream.AtEndOfStream Or sourceline = "End Sub#"
Dann funktioniert alles korrekt.
Hier nun meine Frage warum wird nicht korrekt bis ans Dateiende eingelesen oder
dauert es nur wahnsinnig lange und ich muss länger warten?
Vielen Dank! |
|
| |
|
 |
Semmelhamster Newbie

Anmeldedatum: 24.02.2009 Beiträge: 10
|
Verfasst am: 02.03.2009, 10:34 |
|
|
Das ist echt ein super Forum hier, bekommt man da immer soviel Hilfe?  |
|
| |
|
 |
|
|