Smilla Geschrieben 11. Januar 2006 Geschrieben 11. Januar 2006 Neues Problem, es kommt die Fehlermeldung „Laufzeitfehler in Microsoft VBScript: Index außerhalb des gültigen Bereichs: '[number: 0]'“. Es wird ein Array erstellt in das die Daten die vorher aus der Textdatei ausgelesen wurden reingeschrieben werden sollen. Ich glaube das die Ursache für den Laufzeitfehler darin liegt das das Array leer ist, also gar nicht „befüllt“ wird… Wer kann mir das bestätigen oder sagen wo der Fehler sonst liegt und mir bei der Lösung helfen? Hier der Code vom auslesen der Textdatei sAdressFilePath = "U:\VBScript\adressverwaltung\adressen.txt" Const ForReading = 1 Dim fso, theFile, i, inhalt i = 1 Set fso = CreateObject("Scripting.FileSystemObject") Set theFile = fso.OpenTextFile(sAdressFilePath, ForReading, False) Do Until theFile.AtEndOfStream 'AddToArray(theFile.ReadLine) i = i + 1 CountLines = CountLines + 1 inhalt = theFile.ReadLine 'WScript.Echo inhalt Loop theFile.Close Und hier das Erstellen des Arrays: Dim arTemp 'Variable für Temporäres Array iArrayElements = iArrayElements + 1 'WScript.Echo "iArrayElements:" & iArrayElements & vbNewLine ReDim Preserve arrAdresse(6,iArrayElements) arTemp = Split(sLine, ";") 'WScript.Echo UBound(arTemp) arrAdresse(0,iArrayElements) = arTemp(0) arrAdresse(1,iArrayElements) = arTemp(1) arrAdresse(2,iArrayElements) = arTemp(2) arrAdresse(3,iArrayElements) = arTemp(3) arrAdresse(4,iArrayElements) = arTemp(4) arrAdresse(5,iArrayElements) = arTemp(5) Sorry das ich ständig mit neuen Fragen komme... Zitieren
-roTekuGeL- Geschrieben 11. Januar 2006 Geschrieben 11. Januar 2006 der fehler müsste dir auch zeile und zeichen mitgeben, poste das mal bitte auch, das würde (mir zum. sehr helfen ) Zitieren
Smilla Geschrieben 12. Januar 2006 Autor Geschrieben 12. Januar 2006 U:\VBScript\adressverwaltung\2. suche.vbs(122, 5) Laufzeitfehler in Microsoft VBScript: Index außerhalb des gültigen Bereichs: 'arrAdresse' Hattest du das gemeint? Zitieren
Maulwurf_der_Schlaue Geschrieben 12. Januar 2006 Geschrieben 12. Januar 2006 Hallo, glaub schon das er das gemeint hat nur woher sollen wir jetzt wissen wo Zeile 122 ist? Du hast keine Zeilennummerierung mit angegeben... Zitieren
-roTekuGeL- Geschrieben 12. Januar 2006 Geschrieben 12. Januar 2006 ka... gib mir halt mal zeile 122 zeichen 5 oder zeile 5 und zeichen 122, dann wissen wir ob das die zeilen und zeichenangabe ist also bei meiner fehlerbeschreibung steht zum. immer davor dass das zeile und zeichen sein soll... Zitieren
Smilla Geschrieben 12. Januar 2006 Autor Geschrieben 12. Januar 2006 If strSuche = arrAdresse(ix,iy) Then Das ist Zeile 122! Es ist Zeile 122, Zeichen 5 gemeint, wenn ich die Fehlermeldung doppelt anklicke lande ich bei Zeile 122, die ich euch eingestellt hab. Zitieren
Smilla Geschrieben 12. Januar 2006 Autor Geschrieben 12. Januar 2006 Falls jemand noch den ganzen Code brauch: Option Explicit 'Globale Variablen Dim strSuche 'Suchbegriff Dim sAdressFilePath Dim arrAdresse() 'Array Dim arrErgebnis 'Array Dim iArrayElements iArrayElements = 1 Dim CountLines Dim SucheNochmal Dim sLine Dim tempfile sAdressFilePath = "U:\VBScript\adressverwaltung\adressen.txt" '================================================================= ' Main '================================================================= 'InputBox mit Frage nach Suchwort Suchfunktion 'Datei einlesen ReadEntireFile(sAdressFilePath) 'Array erzeugen AddToArray(sLine) 'AddToArray(TempFile) 'Durch Array arrAdresse loopen und suchen SucheInArray() 'Suchergebnis ausgeben 'Neue Suche starten? NochmalSuchen 'FERTIG! '================================================================= ' Functions und Subs '================================================================= 'Inputbox mit Frage nach Suchwort Sub Suchfunktion strSuche = InputBox ("Geben Sie bitte Ihren Suchbegriff ein!" , "Suchfunktion") End Sub 'Datei einlesen Function ReadEntireFile(sAdressFilePath) Const ForReading = 1 Dim fso, theFile, i, inhalt i = 1 Set fso = CreateObject("Scripting.FileSystemObject") Set theFile = fso.OpenTextFile(sAdressFilePath, ForReading, False) Do Until theFile.AtEndOfStream inhalt = theFile.ReadLine WScript.Echo inhalt 'AddToArray(theFile.ReadLine) i = i + 1 CountLines = CountLines + 1 Loop theFile.Close End Function 'Erzeugt aus dem Inhalt der Datei ein Array Sub AddToArray(sLine) Dim arTemp 'Variable für Temporäres Array iArrayElements = iArrayElements + 1 'WScript.Echo "iArrayElements:" & iArrayElements & vbNewLine ReDim Preserve arrAdresse(6,iArrayElements) arTemp = Split(sLine, ";") 'WScript.Echo UBound(arTemp) arrAdresse(0,iArrayElements) = arTemp(0) arrAdresse(1,iArrayElements) = arTemp(1) arrAdresse(2,iArrayElements) = arTemp(2) arrAdresse(3,iArrayElements) = arTemp(3) arrAdresse(4,iArrayElements) = arTemp(4) arrAdresse(5,iArrayElements) = arTemp(5) 'WScript.Echo arTemp() ' Dim i ' For i = 1 To UBound(arrAdresse,2) ' WScript.Echo arrAdresse(0,i) ' WScript.Echo arrAdresse(1,i) ' WScript.Echo arrAdresse(2,i) ' WScript.Echo arrAdresse(3,i) ' WScript.Echo arrAdresse(4,i) ' WScript.Echo arrAdresse(5,i) ' Next End Sub Function AddToArray(TempFile) MsgBox TempFile End Function 'Suche in Array Function SucheInArray() Dim ix, iy For ix = 0 To 6 For iy = 0 To CountLines ' MsgBox ix ' MsgBox iy 'MsgBox arrAdresse(1,1) If strSuche = arrAdresse(ix,iy) Then MsgBox "Vorname:" & arrAdresse(ix,iy) & vbCrlf & "Nachname:" & arrAdresse(ix+1,iy) & vbCrlf & "Strasse:" & arrAdresse(ix+2,iy) & vbCrlf & "PLZ:" & arrAdresse(ix+3,iy) & vbCrlf & "Ort:" & arrAdresse(ix+4,iy) & vbCrlf & "Telefonnummer:" & arrAdresse(ix+5,iy) NochmalSuchen Else End If Next Next Dim i Dim arrTempAdresse() 'Temporäres Array um die Ergebnisse der Suche zu speichern Dim iArrayElem2 iArrayElem2 = 0 For i = 1 To UBound(arrAdresse, 2) If strSuche = arrAdresse(1,i) Then iArrayElem2 = iArrayElem2 + 1 'WScript.Echo "iArrayElements:" & iArrayElem2 & vbNewLine ReDim Preserve arrTempAdresse(6, iArrayElem2) arrTempAdresse(0, iArrayElem2) = arrAdresse(0,i) arrTempAdresse(1, iArrayElem2) = arrAdresse(1,i) arrTempAdresse(2, iArrayElem2) = arrAdresse(2,i) arrTempAdresse(3, iArrayElem2) = arrAdresse(3,i) arrTempAdresse(4, iArrayElem2) = arrAdresse(4,i) arrTempAdresse(5, iArrayElem2) = arrAdresse(5,i) arrTempAdresse(6, iArrayElem2) = arrAdresse(6,i) End If Next End Function 'Möchten Sie nochmal suchen?? Function NochmalSuchen() Do While SucheNochmal <> vbNo SucheNochmal = MsgBox ("Möchten Sie nochmal suchen?", vbYesNo, "Suchfunktion") If SucheNochmal = vbYes Then Suchfunktion SucheInArray() Else End If Loop End Function Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.