vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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

VB.NET - Ein- und Umsteiger
Re: Dynamisches Array (oder bessere Lösung) 
Autor: mts20
Datum: 21.01.10 09:12

vielen lieben Dank!

Funktioniert einwandfrei.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Dynamisches Array (oder bessere Lösung) 
Autor: mts20
Datum: 19.01.10 11:46

Hallo habe ein kleines Problem, zuerst mal meinen Sourcecode:

    'Suchstring für Zeilen in denen ausgelesen werden soll (eindeutig)
    Dim searchstring As String = "begriff"
 
    'Datei, die durchsucht werden soll nach Tags
    Dim sourcefile As String = "C:\Pfad\datei.txt"
 
    'Speicherort
    Dim extractfile As String = "C:\Pfad\ausgabe.txt"
 
 
    Public Function auslesen_u_extrahieren() As Boolean
 
        Dim ausgelesen() As String = File.ReadAllLines(sourcefile)
        Dim tags_split() As String
 
        'Leere Ausgabedatei erstellen
        File.WriteAllText(extractfile, "")
 
        For i = 0 To ausgelesen.Length - 1
 
            'Wenn der Searchstring in Zeile enthalten ist, dann ausgeben
            If InStr(ausgelesen(i), searchstring) Then
 
                tags_split = Split(ausgelesen(i), "/")
 
                        File.AppendAllText(extractfile, tags_split(4) & _
                          Environment.NewLine)
 
                    End If
 
                End If
 
            End If
 
        Next
 
    End Function
Hab hier eine Funktion, die eine Ausgangsdatei einliest, nach gewissen Strings in Textzeilen sucht und diese (sofern korrekter String enthalten) dann in eine Ausgabedatei wieder Zeilenweise zurückschreiben.

Diese Datei bearbeite ich in einem nächsten Programmschritt wieder weiter, indem ich die neue Datei wieder Zeilenweise auslese in ein Array.

Das muss ich leider so machen, da die ergebnis-datei ja immer eine unterschiedliche größe hat, somit gleich in ein Array wegschreiben nicht geht mit dynamischer größe (oder doch?). Möchte mir den Datei-Puffer sparen und alles Programmintern abarbeiten und erst am Schluss ein Endergebniss auswerfen lassen.

Gibt es da irgendeine elegantere Lösung?

Danke schonmal für euere Hilfe!

Grüße

Diese
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dynamisches Array (oder bessere Lösung) 
Autor: ModeratorDaveS (Moderator)
Datum: 19.01.10 12:09

Obwohl es geht wenn du die Daten so schreibst ist es sehr ineeffizient, weil die Datei für jede Zeile geöffnet, bis Ende positioniert, geschreiben und geschlossen wird. Ich würde eher so etwas vorschlagen (nicht getestet, klar).
    Public Function auslesen_u_extrahieren() As Boolean
 
        Dim tags_split() As String
 
        'Leere Ausgabedatei erstellen
        Dim sw As New StreamWriter(extractfile) 
 
        For Each line As String in File.ReadAllLines(sourcefile)
 
            'Wenn der Searchstring in Zeile enthalten ist, dann ausgeben
            If InStr(line, searchstring) > 0 Then
                tags_split = Split(line, "/")
                sw.WriteLine(extractfile, tags_split(4)) 
            End If
        Next
 
        sw.Close()
 
    End Function

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dynamisches Array (oder bessere Lösung) 
Autor: Manfred X
Datum: 19.01.10 13:48

Hallo!

Es kann sein, dass ich die völlig mißverstanden habe!
In dem Fall: Sorry!

Falls Du einfach die Zeilen aus einer Datei gefiltert einlesen willst,
wobei Du nicht weisst, wieviele Zeilen beim Filtern übrig bleiben, verwende
einfach eine generische List(Of T).

Dim lst As New System.Collections.Generic.List(Of String)

Jede gefilterte Zeile hängst Du an der Liste an mit
lst.add("gefilterte Zeile")

Übertragen der fertig gefüllten Liste in ein Array geht mit:
Dim lines_filtered() As String = lst.ToArray

Das Array "Lines" wird automatisch in der erforderlichen Größe erstellt ...

Das Schreiben und Neulesen der Datei ist damit unnötig.

Wie gesagt: Fall ich die richtig verstanden habe .....

MFG Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dynamisches Array (oder bessere Lösung) 
Autor: ModeratorDaveS (Moderator)
Datum: 19.01.10 14:01

Manfred X hat recht, es ging tatsächlich darum die Zwischendatei ganz zu vermeiden. Alternativ könnte man übrigens in ein MemoryStream schreiben und wieder auslesen (sozusagen eine in-Speicher Datei).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dynamisches Array (oder bessere Lösung) 
Autor: mts20
Datum: 19.01.10 17:55

Danke für eure Hilfe!
Denke das ist genau das was ich gesucht habe, Manfred. Werds mal ausprobieren.

Schönen Abend noch!

Grüße
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dynamisches Array (oder bessere Lösung) 
Autor: mts20
Datum: 21.01.10 07:06

Eine Frage hätte ich noch zu dem ganzen: wie kann ich aus der Liste bzw. direkt aus dem Array duplikate auf die einfachste Art entfernen?

Gibt es da eine bestimmte Funktion?

Grüße
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dynamisches Array (oder bessere Lösung) 
Autor: ModeratorDaveS (Moderator)
Datum: 21.01.10 09:00

Für List(Of )

list = list.Distinct().ToList()

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

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