StreamReader

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Fakiz.

    Help!

    Hier ist der Klarheit halber mein abgespeckter Code, danach meine Frage:

    Imports System
    Imports System.IO

    Module Module1
    Sub Main()
    ' an array with 2 rows and 2 columns
    Dim a(,) As String = {{1, 2}, {3, 4}}
    Dim i, j
    ' output array element for:
    i = 0
    j = 0
    Console.WriteLine(a(i, j))

    'read from a file.
    Dim sr As StreamReader = New StreamReader("X.txt")
    Dim line As String
    ' Read and display the lines from the file until the end
    ' of the file is reached.
    Do
    line = sr.ReadLine()
    Console.WriteLine(line)
    Loop Until line Is Nothing
    sr.Close()
    Console.ReadKey()
    End Sub
    End Module

    Frage: Eine aus dem array gewonnene Zahl (hier z.B. eine "1") soll aus vorab gespeicherten Texten ("X.txt") den Text mit der gleichen Kennziffer abrufen. (Also z.B. 2 soll Text 2 zur Anzeige bringen, u.s.w.) Wie wäre das möglich? ich schaffe das jedenfalls nicht.
    ?( ?(
    Yijaui
    kannst du dein Code bitte in Code-Tags fassen, dass man ihn auch lesen kann?
    Anleitung:



    Yijaui schrieb:

    Eine aus dem array gewonnene Zahl (hier z.B. eine "1")...
    Was meinst du mit "aus array gewonnene Zahl" - wie gewinnt man aus einem Array eine Zahl - also die Formulierung ist mir gänzlich unverständlich?
    Ich habe in einem Feld Daten in Form von Zahlen (Double) gespeichert, die durch die entsprechenden Indizes zurückgegeben werden. In meinem auf das Wesentliche beschränkten Beispiel: wenn ich für a(i, j) i=0 und j=0 eingebe, wird die Zahl 1 zurückgegeben. Statt nun ganze Texte (der eigentliche Sinn der Sache) in den Feldelementen zu speichern (was so vielleicht gar nicht geht), habe ich diese im Debug-Ordner gespeichert und weiß nun nicht, wie ich durch die zurückgegebenen Zahlen die entsprechenden Texte zur Anzeige bringen kann. Kurz gesagt, sollen durch die Indizes nicht Zahlen sondern Texte ausgegeben werden.

    Das Gedönse mit Datenbanken möchte ich vermeiden und auch aus gutem Grund bei den schlichten Anzeigen im Console-output-Fenster bleiben.

    Ich bin am 07.03.2018 wieder zu Hause und werde dann den Code ordnungsgemäß angeben.

    Mir ist klar, dass ein Profi nur ein müdes Lächeln für mein Problemchen übrig haben kann. Dennoch ist mir die Sache so wichtig, dass ich gerne bereit bin, für eine praktikable Lösung 500,-(fünfhundert) Euro entweder für den Experten (der das Problem vermutlich in wenigen Minute lösen kann) oder wenn das nach den Statuten nicht erlaubt ist, als Spende für Euren Club locker zu machen.
    How's that?

    Yijaui schrieb:

    der das Problem vermutlich in wenigen Minute lösen kann
    Das Problem selbst ist vermutlich wirklich sehr schnell zu lösen.
    Der größere Aufwand ist hier wohl das "Plichtenheft", nämlich dir die Problembeschreibung zu entlocken, dass du wirklich das bekommst, was du willst.

    Wenn du eine belastbare Aufgabenstellung definieren kannst, wird dir im Thread wahrscheinlich auch schnell geholfen.
    Falls du einen Auftrag vergeben willst, kannst du das im Marktplatz des Forums tun.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Also du hast eine Zahl, z.B. hier die "1" und möchtest jetzt aus der "X.txt" den Text der hinter der "1" hinterlegt ist bekommen? Dazu müsste man auch wissen, wie die "X.txt" aufgebaut ist. Also wie sieht der Inhalt davon aus? Oder willst du einfach die, in diesem Fall, erste Zeile haben? Oder gibt es eine "1.txt" und du willst, das X durch die Zahl ersetzen und dann den Inhalt auslesen?
    Ich glaube das was @Yijaui meint ist das hier. Eine Funktion, der den hinterlegten Text (in der *.txt-Datei) ausgibt.

    VB.NET-Quellcode

    1. Private Function ReadTextFile(ByVal filename As String, ByVal row As Int32, ByVal column As Int32) As String


    Oder ist es doch die Zahl a(x,y)=K die als Key dient, und daraus willst du dann den Value (ein Text).

    Vielleicht gibst du noch mehr details dazu, und wie weit müssen jene Werkzeuge verwendet werden, die du angibst? Warum reicht es nicht aus, die ganze *.txt-Datei direkt in eine Array einzulesen. Ist die den so gross?

    Nicht das es nicht klappen könnte, habe es ja gar nicht ausprobiert.

    Freundliche Grüsse

    exc-jdbi
    Vielen Dank für Eure Mühe mit mir Ignoranten ;( !

    Es handelt sich um ein dreidimensionales Feld mit insgesamt 243 Elementen (Zahlen), die jeweils etwa fünf Zeilen Text (etwa 50 Worte) repräsentieren sollen. Diese Texte würde ich am liebsten einfach mit dem Windows-Editor in 243 .txt - Dateien schreiben und im Debug-Ordner desselben Programms abspeichern.

    Es ist wohl so, dass die jeweilige Zahl a(x, y, z) als Key dienen soll, aus der ich dann den je Value (Text) will. Dieser Text soll dann angezeigt werden - Ende der Vorstellung.

    Sobald ich wieder zu Hause bin, werde ich versuchen, an Hand meiner Unterlagen eine belastbare Aufgabe zu definieren um dann einen Auftrag im Marktplatz zu vergeben. (By the way, was ist ein "Plichtenheft"?

    Viele Grüße und nochmals danke Euch allen.
    Yijaui
    Hi,

    Nun war ich doch länger als geplant auf Reisen.

    Ich habe den Eindruck gewonnen, dass exc-jdbl nicht nur fähig sondern freundlicherweise auch willens ist, mir zu helfen. Da ich mein Projekt in diesem unfertigen Stadium nur ungern auf dem Marketplace einem größeren Forum vorstellen möchte, würde ich gerne auf folgende Weise fortfahren:

    Am einfachsten fände ich es, wenn mich exc-jdbl zur Klärung der Einzelheiten unter meinem exklusiv für dieses Projekt eingerichteten E-Mail-account (donegalhead@outlook.com) kontaktierte !?

    Viele Grüße
    Yijaui



    Erstell dir ein FileInfo -Objekt das die Datei, die ausgelesen werden soll, repräsentiert. Über die Eigenschaft Exists des erstellten FileInfo -Objekts kannst du prüfen ob die Datei existiert und wenn ja mittels der File Klasse auslesen.

    Spoiler anzeigen

    C#-Quellcode

    1. static void Main(string[] args)
    2. {
    3. double[,,] a = new double[,,] {{{1.5, 2.6}, {3.7, 4.8}}, {{5.1, 6.2}, {7.4, 8.5}}};
    4. FileInfo fi = new FileInfo(Path.Combine(Environment.CurrentDirectory, a[0, 0, 0].ToString() + ".txt"));
    5. if (fi.Exists) {
    6. string content = File.ReadAllText(fi.FullName);
    7. Console.WriteLine(content);
    8. }
    9. else {
    10. Console.ForegroundColor = ConsoleColor.Red;
    11. Console.WriteLine("Die Datei {0}{1}{0} wurde nicht gefunden.", (char)34, fi.FullName);
    12. }
    13. Console.ReadKey();
    14. }