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-2025
 
zurück

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

Visual-Basic Einsteiger
Re: textdatei einlesen und dabei bei gleichen einträge nicht beachten 
Autor: HarryC
Datum: 10.12.05 08:37

Hallo spiderboy,

das hast Du richtig gesehen: Mein Beispiel geht davon aus, daß die Wörter sortiert in der Listbox eingetragen wurden. Ich behaupte einfach mal, daß die Sort-Methode von VB effizienter ist, als ich sie aus dem Stehgreif programmieren könnte. Außerdem umgehe ich damit das eventuell auftretende Problem, daß die einzelnen Worte in der Textdatei nicht alphabetisch sortiert vorliegen.

Wenn sichergestellt ist, daß die einzelnen Worte in der Textdatei sortiert vorliegen, kann man die Selektion mehrfach vorkommender Worte schon während des Einlesens vornehmen (es gäbe natürlich auch eine Lösung, wenn die Worte nicht sortiert vorlägen).

Vorweg: Mir fiel auf, daß Du insgesamt fünfmal die Instr()-Funktion mit den gleichen Parametern verwendest. Um die Sache zu beschleunigen, wäre es empfehlenswert, die Funktion einmal aufzurufen und das Ergebnis z.B. in einer Long-Variablen zu speichern. In diesem Zusammenhang fiel mir außerdem auf, daß Du vbBinaryCompare verwendest; ich sehe den praktischen Nutzen nicht.

Ich würde die Funktion so schreiben:
Function Einlesen(ByVal sFile As String)
Dim intFileNo As Integer
Dim strDeutsch As String
Dim strEnglisch As String
Dim lngPos As Long       ' das ist die Variable, die ich zum Speichern der 
' Position des "="-Zeichens verwende
Dim strInputLine As String
Dim strOldValue As String
 
strOldValue = ""
Form1.lDeutsch.Clear
Form1.lEnglisch.Clear
intFileNo = FreeFile
Open sFile For Input As intFileNo
While Not EOF(intFileNo)
  strDeutsch = "": strEnglisch = ""
  Line Input #intFileNo, strInputLine
  ' ...
  lngPos = InStr(strInputLine,"=") ' alternativ denkbar wäre das Teilen des 
  ' Strings mit der Funktion split()
  If lngPos > 0 Then
    If lngPos > 1 Then strDeutsch = Left$(strInputLine, lngPos - 1)
    If lngPos < Len(strInputLine) Then strEnglisch = Mid$(strInputLine, lngPos _
      + 1)
    ' Jetzt kommt die Prüfung auf doppelte Eintragung in lDeutsch
    If (strOldValue <> strDeutsch) And (strDeutsch <> "") Then
      Form1.lDeutsch.AddItem strDeutsch
      strOldValue = strDeutsch
    End If
    If strEnglisch <> "" Then Form1.lEnglisch.AddItem strEnglisch
  End If
Wend
Close intFileNo
End Function
Möglicherweise versagt mein Beispiel deshalb, weil gerade die Texte nicht sortiert vorlagen. Oder aber auch die Sorted-Eigenschaft war nicht auf True gestellt.

HarryC
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
textdatei einlesen und dabei bei gleichen einträge nicht bea...509spiderboy08.12.05 21:58
Re: textdatei einlesen und dabei bei gleichen einträge nicht...319HarryC08.12.05 23:14
Re: textdatei einlesen und dabei bei gleichen einträge nicht...298spiderboy09.12.05 13:33
Re: textdatei einlesen und dabei bei gleichen einträge nicht...296HarryC09.12.05 17:03
Re: textdatei einlesen und dabei bei gleichen einträge nicht...285spiderboy09.12.05 17:18
Re: textdatei einlesen und dabei bei gleichen einträge nicht...293HarryC09.12.05 22:58
Re: textdatei einlesen und dabei bei gleichen einträge nicht...291spiderboy09.12.05 23:29
Re: textdatei einlesen und dabei bei gleichen einträge nicht...293HarryC10.12.05 08:37
Re: textdatei einlesen und dabei bei gleichen einträge nicht...313spiderboy10.12.05 14:50
Re: textdatei einlesen und dabei bei gleichen einträge nicht...323HarryC10.12.05 15:08
Re: textdatei einlesen und dabei bei gleichen einträge nicht...299spiderboy10.12.05 19:31
Re: textdatei einlesen und dabei bei gleichen einträge nicht...329spiderboy10.12.05 19:50

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