VB-Homepage Tipp 094

schnelles Einlesen von Textdateien

Ein Tipp, bei dessen Testung ich selber etwas gestaunt habe und mich gewundert habe, warum ich dies nicht schon lange nutze.

Nehmen wir an, Sie haben längere Textdateien, die Sie anzeigen möchten.
( Zum Betrachten oder zum Informieren [ als Hilfe? ])

Hier bietet sich nachfolgender Tipp regelrecht an. Zur Anzeige wird eine Textbox genutzt, die ja Multiline (mehrere Zeilen) anzeigen kann (das wußte ich) und die durch horizontale und vertikale Scrollbalken auch längeren Text anzeigen kann. (das hatte ich bisher wohl einfach bei den Eigenschaften überlesen.)

In Verbindung mit dem Tipp044 (Schützen von Textboxen gegen Veränderungen) haben Sie hier wirklich eine gute Möglichkeit Textdateien anzuzeigen.

Eine weitere interessante Sache, die im nachfolgenden Projekt enthalten ist, betrifft das Einlesen der Textdatei, es wird dabei nicht jede eingelesene Zeile gleich in die Textbox ausgegeben, sondern durch Übergabe des Zeilenumbruchs nach jeder eingelesenen Zeile in eine Variable beschrieben die erst nach dem Ende des auslesens der Textdatei in die Textbox ausgegeben wird. Dies bringt auf jeden Fall einen Geschwindigkeitsvorteil.
Im nachfolgenden Beispielprojekt ist auch gleich eine Laufwerks/Verzeichnis/Dateiauswahl eingebunden.

liestext.mak
LIESTEXT.FRM
ProjWinSize=152,402,248,215
ProjWinShow=2
IconForm="Form1"
Title="LIESTEXT"
ExeName="LIESTEXT.EXE"

liestext.frm
VERSION 2.00
Begin Form Form1
BackColor = &H00FF0000&
Caption = "VB Homepage Tipp"
ClientHeight = 6990
ClientLeft = 1275
ClientTop = 1035
ClientWidth = 9375
Height = 7395
Left = 1215
LinkTopic = "Form1"
ScaleHeight = 6990
ScaleWidth = 9375
Top = 690
Width = 9495
Begin CommandButton Command1
Caption = "Beenden"
Height = 375
Left = 120
TabIndex = 5
Top = 6480
Width = 1455
End
Begin FileListBox File1
BackColor = &H00C0C0C0&
Height = 1395
Left = 6720
Pattern = "*.txt"
TabIndex = 4
Top = 5520
Width = 2415
End
Begin DirListBox Dir1
BackColor = &H00C0C0C0&
Height = 930
Left = 4320
TabIndex = 3
Top = 6000
Width = 2295
End
Begin DriveListBox Drive1
BackColor = &H00C0C0C0&
Height = 315
Left = 4320
TabIndex = 2
Top = 5520
Width = 2295
End
Begin TextBox Text1
BackColor = &H00C0C0C0&
Height = 5415
Left = 0
MultiLine = -1 'True
ScrollBars = 3 'Both
TabIndex = 0
Top = 0
Width = 9375
End
Begin Label Label2
BackStyle = 0 'Transparent
Caption = "Tipp044 ""Schutz von Textfeldern gegen Veränderung"" bietet sich hier an."
ForeColor = &H00C0C0C0&
Height = 855
Left = 1800
TabIndex = 6
Top = 6120
Width = 2295
End
Begin Label Label1
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "Interessante Lösung um schnell den Inhalt von Textdateien einzulesen."
ForeColor = &H00FFFFFF&
Height = 495
Left = 120
TabIndex = 1
Top = 5520
Width = 4095
End
End
Sub Command1_Click ()
Unload form1
Set form1 = Nothing
End
End Sub
Sub Dir1_Change ()
file1 = Dir1
End Sub
Sub Drive1_Change ()
file1 = Drive1
Dir1 = Drive1
End Sub
Sub File1_DblClick ()
'die obligatorische Abfrage wegen des Stammverzeichnisses
LetztesZeichen = Right(Dir1, 1)
If Not LetztesZeichen = "\" Then
Dateipfad = Dir1 + "\" + file1
Else
Dateipfad = Dir1 + file1
End If
'Öffnen und einlesen der Datei
On Error GoTo Errorhandler
Open Dateipfad For Input As #1
B$ = ""
While Not EOF(1)
Line Input #1, A$
B$ = B$ + A$ + Chr$(13) + Chr$(10)
Wend
Close
Show
Text1.Text = B$
GoTo AllesOkEnde
Errorhandler:
'Stop
B$ = ""
Close
MsgBox "Die gewählte Datei ist zu groß" + Chr(13) + "um angezeigt zu werden", 32, "SORRY"
Exit Sub
AllesOkEnde:
End Sub

Um den Code zu nutzen, erstellen Sie sich mit einem Editor (ZBsp. Notepad) Dateien, die Sie wie beschrieben benennen und den jeweiligen Code hinein kopieren.
Rufen Sie dann die *.mak Datei aus dem Dateimanager auf oder starten Ihr VB-Programm und öffnen das Projekt.

Tipp-Download

Quelle :

Zurück zur Übersichtsseite