Benutzer mit den meisten Antworten
Streamreader funktioniert nicht

Frage
Antworten
-
Hallo,
zunächst muss ich Stefan beipflichten, dass wir dir mit den gegebenen Informationen so gut wie nicht helfen können.
Dein Code kommt mir aber erstmal bekannt vor. Sodass ich meine den schon mal in einer anderen Frage gesehen zu haben. Daher denke ich auch einen Fehler zu sehen.Wenn ich mich richtig erinnere enthält answers alle Antworten mit den Fragen als Schlüssel. Durch die von dir genannte Fehlerzeile setzt du nun voraus, dass die Antwort exakt der Frage entspricht. Rechts des == solltest du eher die dazugehörige Antwort-TextBox abfragen.
Wenn das Programm wirklich bei der Ausführung abstürzt, so ist es wohl genau anders herum. Das heißt, dass questionsAll die Antworten enthält und du damit nach einem Datensatz mit einer Antwort als Frage suchst. In dem Fall müsstest du auf der linken Seite nach dem Inhalt der Frage-TextBox suchen.PS: In Ergänzung an deinen letzten Post:
Da bei dir eine KeyNotFoundException auftritt, ist der von mir zuletzt genannte Fall eingetreten. Du scheinst nach der Antwort im Wörterbuch zu suchen, du solltest aber nach der Frage suchen.File.ReadLines benutzt zwar intern irgend eine Form eines Streams, nur sieht man den nach außen natürlich nicht. Wenn die Aufgabe zwingend erfordert einen StreamReader zu nutzen, solltest du die Datei besser manuell über einen solchen einlesen.
(Ich gehe mal davon aus, das es als Übungsaufgabe gedacht ist - in echt würde das wohl keiner tun.)In der MSDN Doku zu StreamReader.ReadLine und auf .NET Perls findest du ein paar Beispiele wie du das mit einem Stream umsetzen kannst.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 18. März 2015 23:23 PS
- Als Antwort markiert Enes97 Donnerstag, 19. März 2015 20:58
-
Hallo,
zur Ausnahme: Bei einem Dictionary muss der Schlüssel (hier die Frage) vorhanden sein, sonst wird diese Ausnahme geworfen. Ist man sich nicht sicher, ob der Wert enthalten ist, kann man die TryGetValue-Methode verwenden.
Hier wird es aber nie funktionieren. Denn das Dictionary speichert den Text der Frage als Schlüssel und das ist eine Zeichenkette. Später versuchst Du mit einem integer Wert in einer Schleife darauf zuzugreifen. Eine Fragen wie "Was....?" ist niemals gleich 0 ... 9.
Wenn Du das Dictionary verwenden willst (bzw. musst), so wäre der richtige Weg es mit foreach zu durchlaufen und die integer Variable nach jeder Zuweisung an die Textbox zu erhöhen.
Zum Rest: ReadLines ist durchaus ein StreamReader nur etwas komplexer implementiert. Es geht aber auch mit einem Basiis StreamReader - siehe Beispiel dort. Wobei Du hier die erste Zeile (Frage) liest, ist sie nicht null, liest Du die nächste (Antwort). Ist auch nicht null, fügst Du beide Werte über Dictionary.Add hinzu.
Kleiner Hinweis zur Lesbarkeit: answers und answerss sind schwer zu unterscheiden, Du solltest die Namen etwas mehr differenzieren - z. B. questionsAndAnswers für das Dictionary und question respektive answer für Frage und Antwort.
Gruß Elmar
- Als Antwort markiert Enes97 Donnerstag, 19. März 2015 20:58
Alle Antworten
-
Hi,
poste bitte immer die genaue und vollständige Fehlermeldung, die Du erhältst. Das macht uns allen die Arbeit erheblich leichter. (Und bitte keine Eigeninterpretation des Fehlers, sondern genau das posten, was ausgegeben wird)
Zudem wäre es hilfreich, wenn Du uns a) erklärst, warum Du zwingend einen StreamReader nutzen musst und b) warum in deinem Code überhaupt kein StreamReader vorhanden ist.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 18. März 2015 21:45
-
"An unhandled exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll
Additional information: Der angegebene Schlüssel war nicht im Wörterbuch angegeben."Was meint der denn damit, dass der angegebene Schlüssel (?) nicht im Wörterbuch(?) angegeben ist?
Zu A; Die Aufgabe lautet so, ich muss einen StreamReader benutzen.
Zu B; Ist das keine Art von Stream Reader? Der ließt das ja von einer TextDatei.- Bearbeitet Enes97 Mittwoch, 18. März 2015 22:44
-
Hallo,
zunächst muss ich Stefan beipflichten, dass wir dir mit den gegebenen Informationen so gut wie nicht helfen können.
Dein Code kommt mir aber erstmal bekannt vor. Sodass ich meine den schon mal in einer anderen Frage gesehen zu haben. Daher denke ich auch einen Fehler zu sehen.Wenn ich mich richtig erinnere enthält answers alle Antworten mit den Fragen als Schlüssel. Durch die von dir genannte Fehlerzeile setzt du nun voraus, dass die Antwort exakt der Frage entspricht. Rechts des == solltest du eher die dazugehörige Antwort-TextBox abfragen.
Wenn das Programm wirklich bei der Ausführung abstürzt, so ist es wohl genau anders herum. Das heißt, dass questionsAll die Antworten enthält und du damit nach einem Datensatz mit einer Antwort als Frage suchst. In dem Fall müsstest du auf der linken Seite nach dem Inhalt der Frage-TextBox suchen.PS: In Ergänzung an deinen letzten Post:
Da bei dir eine KeyNotFoundException auftritt, ist der von mir zuletzt genannte Fall eingetreten. Du scheinst nach der Antwort im Wörterbuch zu suchen, du solltest aber nach der Frage suchen.File.ReadLines benutzt zwar intern irgend eine Form eines Streams, nur sieht man den nach außen natürlich nicht. Wenn die Aufgabe zwingend erfordert einen StreamReader zu nutzen, solltest du die Datei besser manuell über einen solchen einlesen.
(Ich gehe mal davon aus, das es als Übungsaufgabe gedacht ist - in echt würde das wohl keiner tun.)In der MSDN Doku zu StreamReader.ReadLine und auf .NET Perls findest du ein paar Beispiele wie du das mit einem Stream umsetzen kannst.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 18. März 2015 23:23 PS
- Als Antwort markiert Enes97 Donnerstag, 19. März 2015 20:58
-
Hallo,
zur Ausnahme: Bei einem Dictionary muss der Schlüssel (hier die Frage) vorhanden sein, sonst wird diese Ausnahme geworfen. Ist man sich nicht sicher, ob der Wert enthalten ist, kann man die TryGetValue-Methode verwenden.
Hier wird es aber nie funktionieren. Denn das Dictionary speichert den Text der Frage als Schlüssel und das ist eine Zeichenkette. Später versuchst Du mit einem integer Wert in einer Schleife darauf zuzugreifen. Eine Fragen wie "Was....?" ist niemals gleich 0 ... 9.
Wenn Du das Dictionary verwenden willst (bzw. musst), so wäre der richtige Weg es mit foreach zu durchlaufen und die integer Variable nach jeder Zuweisung an die Textbox zu erhöhen.
Zum Rest: ReadLines ist durchaus ein StreamReader nur etwas komplexer implementiert. Es geht aber auch mit einem Basiis StreamReader - siehe Beispiel dort. Wobei Du hier die erste Zeile (Frage) liest, ist sie nicht null, liest Du die nächste (Antwort). Ist auch nicht null, fügst Du beide Werte über Dictionary.Add hinzu.
Kleiner Hinweis zur Lesbarkeit: answers und answerss sind schwer zu unterscheiden, Du solltest die Namen etwas mehr differenzieren - z. B. questionsAndAnswers für das Dictionary und question respektive answer für Frage und Antwort.
Gruß Elmar
- Als Antwort markiert Enes97 Donnerstag, 19. März 2015 20:58
-
Ja, Koopakiler. Eine aehnliche Frage hatte ich schon einmal gestellt, mit dem Stream Reader. Da hast du mir diese Weise vorgestellt. Jedoch wollte ich es diesmal fuer etwas anderes benutzen, nur hat es nicht funkionert.
Ich habe jetzt ganz einfach einen StreamReader genommen, wie im Beispiel von MSDN und ich mache das einfach so, dass ich alle Antworten mit einem Writer in die Textdatei reinschreibe und danach mit dem Reader die Texte in den TextBoxen vergleiche.
Danke