Laufzeit-Fehler
-
LordJaxom schrieb:
Wie Du einen Laufzeitfehler hinbekommst? Nunja, Du brauchst eigentlich nur nullptr dereferenzieren oder auf einen nicht existierenden Index eines String zuzugreifen. Das geht ganz einfach.
Wenn Du allerdings einen Laufzeitfehler wegbekommen möchtest, müsstest Du uns vielleicht noch sagen welcher Laufzeitfehler denn wo überhaupt auftritt.
Eine nicht behandelte Ausnahme des Typs "System.FormatExceptions" ist in mscorlib.dll aufgetreten
Zusätzoliche Informationhen: Die Eingabezeichenfolge hat das falsche Format.
Das passiert wenn ich a eingebe. Dann kommt das Debuggerbild und wenn den durchlöaufen lasse steht der Curser vor
aKiste.hoehe=Convert::ToInt32(Console::ReadLine());
Das Programm ist gelaufen nur aufeinmal nicht mehr.
-
Heinerich schrieb:
Hallo erst Mal
Kann mir jemand sagen wie einen Laufzeit-Fehler wieder hinbekomme?Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': break;
Vielen Dank im Voraus
Gib mal direkt nach der Zeile
funktionAuswahl = Console::Read();
folgendes ein:
Console::ReadLine();
und jetzt sollte es funktionieren
So sollte es jetzt aussehen:
Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); Console::ReadLine(); //holt die Entertaste aus dem Speicher // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': break;
Also ich benutze eigentlich nie Read() allein weil man da die Enter-Taste mit Console::ReadLine() aus dem Speicherholen muss.
Hinweis in der Hilfe:
Die ReadLine-Methode oder die KeyAvailable-Eigenschaft und die ReadKey-Methode sind der Read-Methode vorzuziehen.
-
Rudi G schrieb:
Heinerich schrieb:
Hallo erst Mal
Kann mir jemand sagen wie einen Laufzeit-Fehler wieder hinbekomme?Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': break;
Vielen Dank im Voraus
Gib mal direkt nach der Zeile
funktionAuswahl = Console::Read();
folgendes ein:
Console::ReadLine();
und jetzt sollte es funktionieren
So sollte es jetzt aussehen:
Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); Console::ReadLine(); //holt die Entertaste aus dem Speicher // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': break;
Also ich benutze eigentlich nie Read() allein weil man da die Enter-Taste mit Console::ReadLine() aus dem Speicherholen muss.
Hinweis in der Hilfe:
Die ReadLine-Methode oder die KeyAvailable-Eigenschaft und die ReadKey-Methode sind der Read-Methode vorzuziehen.
Das ist es leider nicht, es kommt die slebe Fehlermeldung
-
Heinerich schrieb:
Das ist es leider nicht, es kommt die slebe Fehlermeldung
Also ich habe 100% den Code genommen und bei mir lag/liegt es daran:
#include "stdafx.h" using namespace System; struct kiste { Int32 hoehe; Int32 breite; Int32 laenge; }; // Die funktion zum einlesen der Kisten kiste einlesen(Int32 kistenNummer) { // Eine lokale Strukturvariable kiste aKiste; Console::Write("\nGeben Sie die Höhe der {0}. Kiste ein. = ",kistenNummer); aKiste.hoehe=Convert::ToInt32(Console::ReadLine()); Console::Write("\nGeben Sie die Breite der {0}. Diste ein. = ",kistenNummer); aKiste.breite=Convert::ToInt32(Console::ReadLine()); Console::Write("\nGeben Sie bitte die Länge {0}. Kiste ein: = ",kistenNummer); aKiste.laenge=Convert::ToInt32(Console::ReadLine()); // eine Leerzeile ausgeben Console::WriteLine(); return aKiste; } // Die Funktion zum berechnen Int32 volumen(kiste aKiste) { Int32 volWert; volWert=aKiste.hoehe * aKiste.breite * aKiste.laenge; return volWert; } int main(array<System::String ^> ^args) { Char funktionAuswahl; Console::WriteLine(" Auswahl der Funktionen: = "); Console::WriteLine(" a Eingabe"); Console::WriteLine(" b Löschen"); Console::WriteLine(" c Ändern"); Console::WriteLine(" d Anzeigen"); Console::WriteLine(" e Auflisten"); Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); Console::ReadLine(); //Das ist meine Änderung!!!! // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': einlesen(10); break; case 'b': break; case 'c': break; case 'd': break; case 'e': break; default: Console::WriteLine(" Sie haben ein falsches Zeichen eingegeben"); } { // Die lokale Vereinbarung der Strukturvariablen für die Struktur kiste kiste kleineKiste[3]; // das Einlesen der Daten über die Funtion for(Int32 schleife=0; schleife<3; schleife++) kleineKiste[schleife]=einlesen(schleife+1); for(Int32 schleife=0; schleife<3; schleife++) Console::WriteLine("Das Volumen von Kiste {0} ist: {1}",schleife+1, volumen(kleineKiste[schleife])); } return 0; }
------------------------------------------------------------
Sonst ersetz mal folgende Zeile:
funktionAuswahl=Console::Read();
durch diese:
funktionAuswahl=Convert::ToChar(Console::ReadLine());
Bei mir funktioniert beides!
-
Rudi G schrieb:
Heinerich schrieb:
Das ist es leider nicht, es kommt die slebe Fehlermeldung
Also ich habe 100% den Code genommen und bei mir lag/liegt es daran:
#include "stdafx.h" using namespace System; struct kiste { Int32 hoehe; Int32 breite; Int32 laenge; }; // Die funktion zum einlesen der Kisten kiste einlesen(Int32 kistenNummer) { // Eine lokale Strukturvariable kiste aKiste; Console::Write("\nGeben Sie die Höhe der {0}. Kiste ein. = ",kistenNummer); aKiste.hoehe=Convert::ToInt32(Console::ReadLine()); Console::Write("\nGeben Sie die Breite der {0}. Diste ein. = ",kistenNummer); aKiste.breite=Convert::ToInt32(Console::ReadLine()); Console::Write("\nGeben Sie bitte die Länge {0}. Kiste ein: = ",kistenNummer); aKiste.laenge=Convert::ToInt32(Console::ReadLine()); // eine Leerzeile ausgeben Console::WriteLine(); return aKiste; } // Die Funktion zum berechnen Int32 volumen(kiste aKiste) { Int32 volWert; volWert=aKiste.hoehe * aKiste.breite * aKiste.laenge; return volWert; } int main(array<System::String ^> ^args) { Char funktionAuswahl; Console::WriteLine(" Auswahl der Funktionen: = "); Console::WriteLine(" a Eingabe"); Console::WriteLine(" b Löschen"); Console::WriteLine(" c Ändern"); Console::WriteLine(" d Anzeigen"); Console::WriteLine(" e Auflisten"); Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); Console::ReadLine(); //Das ist meine Änderung!!!! // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': einlesen(10); break; case 'b': break; case 'c': break; case 'd': break; case 'e': break; default: Console::WriteLine(" Sie haben ein falsches Zeichen eingegeben"); } { // Die lokale Vereinbarung der Strukturvariablen für die Struktur kiste kiste kleineKiste[3]; // das Einlesen der Daten über die Funtion for(Int32 schleife=0; schleife<3; schleife++) kleineKiste[schleife]=einlesen(schleife+1); for(Int32 schleife=0; schleife<3; schleife++) Console::WriteLine("Das Volumen von Kiste {0} ist: {1}",schleife+1, volumen(kleineKiste[schleife])); } return 0; }
------------------------------------------------------------
Sonst ersetz mal folgende Zeile:
funktionAuswahl=Console::Read();
durch diese:
funktionAuswahl=Convert::ToChar(Console::ReadLine());
Bei mir funktioniert beides!
Es kommt die selbe Meldung. Könnte es sein das ich mein Programm reparieren muss?
Wenn doch bei dir beides funktioniert? Bei mir hat es ja auch geklappt.
-
Heinerich schrieb:
Es kommt die selbe Meldung. Könnte es sein das ich mein Programm reparieren muss?
Wenn doch bei dir beides funktioniert? Bei mir hat es ja auch geklappt.Das ist aber komisch
Ich würde den ganzen Quelltext rauskopieren ein neues Projekt anlegen und den Quelltext wieder einfügen. Wenn es da dann auch nicht funktioniert dann weiß ich wirklich nicht mehr weiter!
-
Rudi G schrieb:
Heinerich schrieb:
Das ist es leider nicht, es kommt die slebe Fehlermeldung
Also ich habe 100% den Code genommen und bei mir lag/liegt es daran:
#include "stdafx.h" using namespace System; struct kiste { Int32 hoehe; Int32 breite; Int32 laenge; }; // Die funktion zum einlesen der Kisten kiste einlesen(Int32 kistenNummer) { // Eine lokale Strukturvariable kiste aKiste; Console::Write("\nGeben Sie die Höhe der {0}. Kiste ein. = ",kistenNummer); aKiste.hoehe=Convert::ToInt32(Console::ReadLine()); Console::Write("\nGeben Sie die Breite der {0}. Diste ein. = ",kistenNummer); aKiste.breite=Convert::ToInt32(Console::ReadLine()); Console::Write("\nGeben Sie bitte die Länge {0}. Kiste ein: = ",kistenNummer); aKiste.laenge=Convert::ToInt32(Console::ReadLine()); // eine Leerzeile ausgeben Console::WriteLine(); return aKiste; } // Die Funktion zum berechnen Int32 volumen(kiste aKiste) { Int32 volWert; volWert=aKiste.hoehe * aKiste.breite * aKiste.laenge; return volWert; } int main(array<System::String ^> ^args) { Char funktionAuswahl; Console::WriteLine(" Auswahl der Funktionen: = "); Console::WriteLine(" a Eingabe"); Console::WriteLine(" b Löschen"); Console::WriteLine(" c Ändern"); Console::WriteLine(" d Anzeigen"); Console::WriteLine(" e Auflisten"); Console::WriteLine("Bitte wählen Sie aus"); funktionAuswahl=Console::Read(); Console::ReadLine(); //Das ist meine Änderung!!!! // Die Auswahl der einzelnen Funktionen switch (funktionAuswahl) { case 'a': einlesen(10); break; case 'b': break; case 'c': break; case 'd': break; case 'e': break; default: Console::WriteLine(" Sie haben ein falsches Zeichen eingegeben"); } { // Die lokale Vereinbarung der Strukturvariablen für die Struktur kiste kiste kleineKiste[3]; // das Einlesen der Daten über die Funtion for(Int32 schleife=0; schleife<3; schleife++) kleineKiste[schleife]=einlesen(schleife+1); for(Int32 schleife=0; schleife<3; schleife++) Console::WriteLine("Das Volumen von Kiste {0} ist: {1}",schleife+1, volumen(kleineKiste[schleife])); } return 0; }
------------------------------------------------------------
Sonst ersetz mal folgende Zeile:
funktionAuswahl=Console::Read();
durch diese:
funktionAuswahl=Convert::ToChar(Console::ReadLine());
Bei mir funktioniert beides!
Ich habe alles neu geschrieben und jetzt klappt es. Ich kann die Kisten einlesen.
Aber wie kriege ich das hin das ich jeder Kiste eine bestimmte Nummer zu weise über die ich sie später aufrufen kann? Würdest du mir dabei behilflich sein?
-
Heinerich schrieb:
Ich habe alles neu geschrieben und jetzt klappt es. Ich kann die Kisten einlesen.
Super
Heinerich schrieb:
Aber wie kriege ich das hin das ich jeder Kiste eine bestimmte Nummer zu weise über die ich sie später aufrufen kann?
Genau wie du den Kisten Höhe/Breite/Länge zuweist.
Erstell ein neues Element in der Struktur in dem du dann die Nummer "ablegen" kannst.
Heinerich schrieb:
Würdest du mir dabei behilflich sein?
Wenn ich kann sehr gern
Also diese Aufgabe kommt mir sehr bekannt vor (Fernhochschule??)
-
Ich hätte ReadLine() in einen Char konvertiert.
Da ReadLine eine String zurückgibt.
Das heißt, die Lösung ist sehr instabil.
Aber trotzdem, Toi, toi, toi.
-
Mille schrieb:
Ich hätte ReadLine() in einen Char konvertiert.
Da ReadLine eine String zurückgibt.
Das heißt, die Lösung ist sehr instabil.
Aber trotzdem, Toi, toi, toi.Ich habe das Programm neu geschrieben und seit dem läuft es wieder
Heinerich