vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

Visual-Basic Einsteiger
einlesen einer Textdatei 
Autor: sinus
Datum: 27.04.12 14:30

Hallo,

beim Einlesen einer Textdatei habe ich das Problem das die ersten beiden Zeichen ein
y(mit ü-Punkten)und ein bsind. Ich vermute das irgendwo im Speicher oder im Puffer
diese beiden buchstaben gespeichert sind.
Im Code erfolgt ein zweites einlesen da ist dieser Fehler nicht mehr vorhanden.

Function array*****()
Dim i As Integer
Dim temp As String
Dim tempparts() As String
 
Open "h:\*******.txt" For Input As #1
i = 0
 
Do While Not EOF(1)
    Line Input #1, temp
        tempparts = Split(temp, ",")
        user(i).Name = tempparts(0) & " " & tempparts(1)
        user(i).abteilung = tempparts(2)
        user(i).telefon = tempparts(3)
        user(i).email = tempparts(4)
        user(i).usern = tempparts(5)
        user(i).selectvon = False
       user(i).dwahl = tempparts(6)
        i = i + 1
Loop
 
Close #1
End Function
Muss ich die Variable temp vorher als leer definieren oder den Line Input Befehl?
Vielen Dank für die Hilfe im Voraus.

Gruß
Birger

Beitrag wurde zuletzt am 27.04.12 um 14:47:21 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: einlesen einer Textdatei 
Autor: Preisser
Datum: 27.04.12 15:43

Hallo,

dabei handelt es sich vermutlich um eine Textdatei, die als UTF-16 LE gespeichert ist. Das BOM (Byte Order Mark) bei UTF-16 LE besteht aus FF FE (hex). Wenn diese Datei als Windows-1252 eingelesen wird, erscheinen die ersten 2 Bytes als "ÿþ".
Du müsstest also z.b. prüfen ob die ersten 2 Bytes der Textdatei "FF FE" sind und dann die Datei als UTF-16 LE einlesen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: einlesen einer Textdatei 
Autor: eierlein
Datum: 27.04.12 16:04

Versuch's mal so.


...
Do While Not EOF(1)
    Line Input #1, temp
    If i = 0 Then temp = mid$(temp, 3)
        tempparts = Split(temp, ",")
 
...
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: einlesen einer Textdatei 
Autor: sinus
Datum: 02.05.12 13:33

Hallo eierlein,

vielen Dank das hat Prima funktioniert. Wenn ich das richtig verstanden habe. Springe ich
immer in der ersten Zeile an die 3te Adresse.

Greetz

sinus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: einlesen einer Textdatei 
Autor: Preisser
Datum: 02.05.12 14:40

Hallo,

auf den ersten Blick scheint das zwar zu funktionieren, da VB6 hier anscheinend die \0-Bytes überspringt; aber wenn die Datei tatsächlich in UTF-16 LE ist, werden wahrscheinlich auch Zeichen mit Unicodewerten > U+00FF, wie z.B. "€", falsch eingelesen.

Man müsste z.B. die Datei byteweise einlesen und dann anhand des BOMs entscheiden, welche Kodierung man verwendet. Da das alles bei VB6 aber ziemlich umständlich ist, wäre es am einfachsten, auf VB.Net zu wechseln, da dort schon Unterstützung für verschiedene Encodings direkt integriert ist und der StreamReader beispielsweise die Kodierung auch anhand des BOMs erkennen kann.

Beitrag wurde zuletzt am 02.05.12 um 14:55:35 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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