vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Mehrer Dateien zusammenfügen 
Autor: IRCox
Datum: 29.03.08 10:46

Moin, Moin....

Also - prinzipiell ist dies möglich, ABER das Ganze strapaziert den Rechner schon arg - besonders im Hinblick auf die Performance des Speichers. Du willst Dir ca. 210MB an Text in den Speicher ziehen - das ist nicht ohne, je nach Länge der einzelnen Strings kommt da ganz schön was zusammen. Zu überlegen wäre Dir jede einzelne Datei für sich vorzunehmen und da die "wichtigen" Daten herauszuziehen. Ich weiss ja nicht, um welche Art Logdateien es sich handelt, aber das wäre wohl der "elegante" Weg. Im Übrigen sollte man immer versuchen, so schonend wie möglich mit den Ressourcen des Rechners umzugehen - zumindest, wenn das Programm später auch auf anderen Rechnern flüssig laufen soll. Man kann jetzt vielleicht sagen "Hey, wir leben im Zeitalter der MultiCore- und GB-RAM-Rechner", aber lass' eine solche speicherintensive Operation mal auf einem älteren System laufen... Da wirst Du sehen, dass die Geschwindigkeit dramatisch einbrechen wird und mit ein bisserl Pech gleich die ganze Anwendung abschmiert - alles schon gesehen
Nunja... lange Rede, kurzer Sinn - dieses wäre die "Holzhammer-Methode" (ohne Gewähr):
Dim i As Integer
Dim FileNum As Integer
Dim x As Long
Dim StartPos As Long
Dim ActPos As Long
Dim tmpCount As Long
Dim tmpByteToRead As Long
Dim LinesCount As Long
Dim FileLength As Double
Dim tmpBytesRead As Double
Dim tmpData As String
Dim tmpArray() As String
 
x = 0
LinesCount = 0
For i = 0 To 6
    FileNum = FreeFile
    Open ("D:\Temp\test" & CStr(i + 1) & ".txt") For Binary As #FileNum
        FileLength = LOF(FileNum)
        tmpByteToRead = 256& * 256&
        tmpBytesRead = 0
        Do
            If FileLength = tmpBytesRead Then
                Exit Do
            ElseIf (FileLength - tmpBytesRead) < tmpByteToRead Then
                tmpByteToRead = FileLength - tmpBytesRead
            End If
            tmpData = Space$(tmpByteToRead)
            Get #FileNum, tmpBytesRead + 1, tmpData
            StartPos = 1
            tmpCount = 0
            Do
                ActPos = InStr(StartPos, tmpData, Chr(10))
                If ActPos = 0 Then Exit Do
                tmpCount = tmpCount + 1
                StartPos = ActPos + 1
            Loop
            LinesCount = LinesCount + tmpCount
            tmpBytesRead = tmpBytesRead + tmpByteToRead
        Loop
    Close FileNum
    ReDim Preserve tmpArray(LinesCount)
    FileNum = FreeFile
    Open ("D:\Temp\test" & CStr(i + 1) & ".txt") For Input As #FileNum
        While Not EOF(FileNum)
            Line Input #FileNum, tmpArray(x)
            If tmpArray(x) <> vbNullString Then
                x = x + 1
            End If
        Wend
    Close FileNum
    Debug.Print (CStr(Now) & ": Bearbeitung der Datei test" & CStr(i + 1) & _
      ".txt fertiggestellt!")
Next
ReDim Preserve tmpArray(x - 1)
 
Debug.Print ("--> " & CStr(UBound(tmpArray) + 1) & " Datensätze im Array" & _
  "'tmpArray' (0 - " & CStr(UBound(tmpArray)) & ")")
Der Code ließt die Textdatei ein und bestimmt zunächst deren Zeilenanzahl. Aufgrund dessen wird das Array dimensioniert und die Textdatei wird zeilenweise (ohne Leerzeilen und/oder Zeilenumbrüche) ins Array eingelesen.
Dies alles wird in einer Schleife für alle Dateien durchgeführt. Am Ende wird das Array ein letztes Mal redimensioniert, um die korrekte Anzahl der "gefüllten" Zeilen zu bekommen, denn bis dato wurde das Array auf die Gesamtanzahl der Zeilen (inkl. Leerzeilen) dimensioniert.
Vielleicht kannst Du ja damit etwas anfangen - aber wie gesagt... elegant ist das nicht

MfG IRCox
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mehrer Dateien zusammenfügen1.288csc10127.03.08 18:05
Re: Mehrer Dateien zusammenfügen838AndyOG28.03.08 14:26
Re: Mehrer Dateien zusammenfügen1.437IRCox29.03.08 10:46
Re: Mehrer Dateien zusammenfügen823csc10131.03.08 09:00

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel