Nur einen Teil einer Datei einlesen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Nur einen Teil einer Datei einlesen

    Hallo liebes Forum,

    mich beschäftigt nun seit einiger Zeit ein kleines Thema, das ich für mein Projekt brauche.Ich würde gerne, nur einen bestimmten Teil einer Datei auslesen.Der Aufbau der Datei ist wie folgt:

    Quellcode

    1. {
    2. module: ssl://www.opera.com/download/get/?id=36407&location=360&nothanks=yes&sub=marine?
    3. submodule: ssl://img.dafont.com/dl/?f=ventilla_script
    4. pub: true
    5. zip: true * extract
    6. ipath: C:\Program Files\Opera\Opera Stable
    7. epath: C:\%USERENV%\AppData\Roaming\boxbrew\tmp\Opera\Opera Stable
    8. run-test: true
    9. run-byo: false
    10. }


    Dies ist nur ein Test-Paket.Nun würde ich aber gerne alles was nach module: steht bis zum ? einlesen und nichts anderes.Wie könnte ich dies am besten anstellen, bin für jeden Denkanstoß dankbar.

    Gruß,
    Jan
    Software being "Done" is like lawn being "Mowed". (Jim Benson)
    Ist das JSON oder ähnliches? Sieht mir nämlich stark danach aus. Dann könntest du das Ganze eben verwalten via Serializing.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Wenn's nicht absolut performant sein soll würde ich da mit RegEx reinschlagen.

    VB.NET-Quellcode

    1. Dim r As New Regex("module:(?<content>(.*?))\?")
    2. MessageBox.Show(r.Match("module: ssl://www.opera.com/download/get/?id=36407&location=360&nothanks=yes&sub=marine?").Groups("content").Value)


    Schöner ist es aber wirklich den String in die "normale" Struktur zu ändern und dann gezielt diesen Wert abzurufen.

    Trade schrieb:

    JSON
    da fehlen die Semikolönner.
    @KidRick:: Eine so kurze Datei lies per IO.File.ReadAllLines(PFAD) ein und sieh Dir dann einfach die betreffenden Zeilen an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey,

    erstmal danke für die vielen Antworten ;)

    @Trade

    Nein, das ist kein JSON die Dateien nennen sich BOXSH.

    @LaMiy

    Vielen vielen Dank, leider gibt es das Problem das die Dateien variieren, da man sich eigene Pakete erstellen kann.

    @RodFromGermany

    Vielen Dank auch dazu, werde es nachher mal testen ;)
    Software being "Done" is like lawn being "Mowed". (Jim Benson)
    @KidRick:
    Wie variieren sie denn?
    Das von mir gezeigte Pattern findet immer Text zwischen module: und dem ersten Fragezeichen.
    Wenn dieses Konstrukt nicht immer vorkommt, dann musst du eins finden oder eins aus deinem gegebenen Text bauen, welches klappt.
    Wie könnte denn ein unterschiedlicher Text aussehen und welchen Teil davon willst du haben?
    @LaMiy

    tschuldigung' hab den Code falsch gelesen ;)

    EDIT://

    Allerdings gibt es nun einen Fehler ;)

    VB.NET-Quellcode

    1. Dim ofd As New OpenFileDialog
    2. With ofd
    3. .Title = "Open a package"
    4. .Filter = "boxbrew-Packages (*.boxsh;*.boxbr;*.brew)|*.boxsh;*.boxbr;*,brew"
    5. End With
    6. Dim r As New Regex("module:(?<content>(.*?))\?")
    7. If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. DWM_READED.Text = IO.File.ReadAllText(ofd.FileName)
    9. Me.Text = ofd.SafeFileName & " - [Errors: 0]" & " - [Module: " & r.Match(DWM_READED.Text)
    10. End If


    Fehler: Der &-Operator ist für die Typen "String" und "System.Text.RegularExpressions.Match" nicht definiert.

    Könnte mir jemand sagen was ich falsch gemacht habe ?

    Gruß,
    Jan
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KidRick“ ()

    @sonne75

    VB.NET-Quellcode

    1. Friend WithEvents DWM_READED As System.Windows.Forms.RichTextBox
    2. '...
    3. Dim r As New Regex("module:(?<content>(.*?))\?")
    Software being "Done" is like lawn being "Mowed". (Jim Benson)