Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12
  1. #1
    Fortgeschrittener
    Registriert seit
    07.10.2008
    Beiträge
    35

    Standard C++/CLI Konsolenanwendung spackt...

    hallo leute :p
    ich hab n bissel angefangen mit C++/CLI
    (.Net Laufzeitumgebung)

    Also das Buch das ich Lese
    ("Jetzt lerne ich Visual C++ 2008")
    hat mir die ersten 2 Kapitel nur Theorie an die Birne geschmissen... jetzt da ich ein bisschen syntax gelernt habe hab ich versucht nen simplen Rechner zu schreiben.

    hier die ganze source:

    Code:
    #include stdafx.cpp
    
    using namespace system;
    
    int main()
    {
    	double nummer1;
    	double nummer2;
    	double ende;
    	string ^name;
    	string ^input1;
    	string ^input2;
    
    	Console::WriteLine("Bitte Namen eingeben:");
    	name = Console::WrtieLine();
    
    	Console::WriteLine("Hallo " + name " bitte geben sie die erste Zahl ein:");
    
    	input1 = Console::ReadLine();
    	nummer1 = Convert::ToInt64(input1);
    
    	Console::WriteLine(name + ", Ihre erste zahl lautet "+ nummer1);
    	Console::WriteLine(name + ", bitte geben sie die zweite zahl ein:");
    
    	input2 = Console::ReadLine();
    	nummer2 = Convert::ToInt64(input2);
    
    	ende = nummer1 + nummer2;
    	
    	Console::WriteLine(+name ", Ihre ersta zahl lautete "+ nummer1 " und ihre zweite zahl lautet " + nummer2);
    	Console::WriteLine("Daraus ergeibt sich:" + ende);
    	Console::ReadLine();
    
    
    }
    aber ich bekomme die Fehlermeldung
    Code:
    Fehler	1	error C2871: 'system': Es ist kein Namespace mit diesem Namen vorhanden	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	4
    Fehler	2	error C2065: 'string': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	11
    Fehler	3	error C2065: 'name': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	11
    Fehler	4	error C2065: 'string': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	12
    Fehler	5	error C2065: 'input1': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	12
    Fehler	6	error C2065: 'string': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	13
    Fehler	7	error C2065: 'input2': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	13
    Fehler	8	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	15
    Fehler	9	error C3861: "WriteLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	15
    Fehler	10	error C2065: 'name': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	16
    Fehler	11	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	16
    Fehler	12	error C3861: "WrtieLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	16
    Fehler	13	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	18
    Fehler	14	error C2065: 'name': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	18
    Fehler	15	error C2143: Syntaxfehler: Es fehlt ')' vor 'Zeichenfolge'	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	18
    Fehler	16	error C2059: Syntaxfehler: ')'	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	18
    Fehler	17	error C2065: 'input1': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	20
    Fehler	18	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	20
    Fehler	19	error C3861: "WriteLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	18
    Fehler	20	error C3861: "ReadLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	20
    Fehler	21	error C2653: 'Convert': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	21
    Fehler	22	error C2065: 'input1': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	21
    Fehler	23	error C3861: "ToInt64": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	21
    Fehler	24	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	23
    Fehler	25	error C2065: 'name': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	23
    Fehler	26	error C3861: "WriteLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	23
    Fehler	27	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	24
    Fehler	28	error C2065: 'name': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	24
    Fehler	29	error C3861: "WriteLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	24
    Fehler	30	error C2065: 'input2': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	26
    Fehler	31	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	26
    Fehler	32	error C3861: "ReadLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	26
    Fehler	33	error C2653: 'Convert': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	27
    Fehler	34	error C2065: 'input2': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	27
    Fehler	35	error C3861: "ToInt64": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	27
    Fehler	36	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	31
    Fehler	37	error C2065: 'name': nichtdeklarierter Bezeichner	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	31
    Fehler	38	error C2143: Syntaxfehler: Es fehlt ')' vor 'Zeichenfolge'	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	31
    Fehler	39	error C2059: Syntaxfehler: ')'	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	31
    Fehler	40	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	32
    Fehler	41	error C3861: "WriteLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	31
    Fehler	42	error C3861: "WriteLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	32
    Fehler	43	error C2653: 'Console': Keine Klasse oder Namespace	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	33
    Fehler	44	error C3861: "ReadLine": Bezeichner wurde nicht gefunden.	c:\Dokumente und Einstellungen\abuse\Eigene Dateien\Visual Studio 2008\Projects\b\b.cpp	33
    was mache ich da falsch?

    mfg euer Ty

  2. #2
    Fortgeschrittener
    Registriert seit
    17.03.2008
    Beiträge
    35

    Standard

    Probier mal statt "namespace system" "namespace std" zu nehmen. So hab ich es zumindest gelernt.

    LG,
    Master of Chaos

  3. #3
    Fortgeschrittener
    Registriert seit
    07.10.2008
    Beiträge
    35

    Standard

    hmm das mit dem namespace stimmt schon nur das ich es peinlicher weise klein geschrieben habe...
    das klappt jetzt aber die Fehler mit dem nicht deklarierten Zeugs bleibt leider? :S

  4. #4
    Trojaner
    Registriert seit
    21.01.2007
    Beiträge
    66

    Standard

    So lieber Tyc0rc!

    Du hast eine menge kleiner Fehler gemacht, bei manchen Methoden(Funktionen) hast du dich verschrieben und schon deshalb fehler kassiert.

    Dann als nächstes hast du einige Synthxfehler gemacht und bei Textausgaben ein plus vergessen zu setzen um die Strings und Variablen miteinander zu verbinden.

    Beispiel:
    Code:
    Console::WriteLine("Ihr name lautet: " + name "und ist schön"); <-- funktioniert nicht
    
    Console::WriteLine("Ihr name lautet: " + name + "und ist schön");<-- funktioniert
    Als nächstes hast du 2 Variablen vom Typ Double deklariert(nummer1 u. nummer2) welchen du aber nie einen Wert zugewiesen hast.Du hast die Zahlen die eigegeben wurden nämlich in Input1 und Input2 gespeichert,was auch richtig ist weil man von der Konsole nur Strings auslesen Kann.Du musst dann bei der Berechnung die Strings natürlich in Double Konvertieren,weil du das Ergebniss ja in der variable ende speicherst und die den Typ Double hat und auch nur diesen annehmen kann.

    Hier der Code wie er funktioniert:
    Code:
    #include "stdafx.h"
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
       double ende;
       String ^name;
       String ^input1;
       String ^input2;
    
       Console::WriteLine("Bitte Namen eingeben: ");
       name = Console::ReadLine();
    
       Console::WriteLine("Hallo " + name + " bitte geben sie die erste Zahl ein: ");
    
       input1 = Console::ReadLine();
    
       Console::WriteLine(name + ", Ihre erste zahl lautet " + input1);
       Console::WriteLine(name + ", bitte geben sie die zweite zahl ein: ");
    
       input2 = Console::ReadLine();
    
       ende = Convert::ToDouble(input1) + Convert::ToDouble(input2);
       
       Console::WriteLine(name + ", Ihre erste zahl lautete " + input1 + " und ihre zweite zahl lautet " + input2);
       Console::WriteLine("Daraus ergeibt sich: " + ende);
       Console::ReadLine(); 
    
       return 0;
    }

  5. #5
    Fortgeschrittener
    Registriert seit
    07.10.2008
    Beiträge
    35

    Standard

    hmm super vielen dank.
    Aber ich verstehe den fehler nicht richtig den ich gemacht habe... also den mit denn + also mit den Strings die ich falsch zusammengefügt habe ist klar...

    aber ich lese doch in meinem code den string "input1" ein und konvertieren den in Int64 (double) namens "nummer1"

    das müsste doch klappen oder?

    mfg

  6. #6
    Trojaner
    Registriert seit
    21.01.2007
    Beiträge
    66

    Standard

    Int64 ist kein Double sondern Integer und kann nur Ganzzahlen aufnehmen(ohne Komma).

    Du hast ausserdem oben wo du die Variablen input1,input2,name deklariert hast das "s" von String(Datentyp) klein geschrieben das muss aber groß sein.

    C++ ist Case-Sensetive, das heisst es wird zwischen klein -und Großschreibung unterschieden.

    Naja hier nochmal der Code wie du ihn haben wolltest,vielleicht verstehst du es dann besser.

    Code:
    #include "stdafx.h"
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
       double nummer1;
       double nummer2;
       double ende;
       String ^name;
       String ^input1;
       String ^input2;
    
       Console::WriteLine("Bitte Namen eingeben:");
       name = Console::ReadLine();
    
       Console::WriteLine("Hallo " + name + " bitte geben Sie die erste Zahl ein:");
    
       input1 = Console::ReadLine();
       nummer1 = Convert::ToDouble(input1);
    
       Console::WriteLine(name + ", Ihre erste zahl lautet " + nummer1);
       Console::WriteLine(name + ", bitte geben Sie die zweite zahl ein:");
    
       input2 = Console::ReadLine();
       nummer2 = Convert::ToDouble(input2);
    
       ende = nummer1 + nummer2;
       
       Console::WriteLine(name + ", Ihre ersta zahl lautete "+ nummer1 + " und ihre zweite zahl lautet " + nummer2);
       Console::WriteLine("Daraus ergeibt sich: " + ende);
       Console::ReadLine();  
    
       return 0;
    }

  7. #7
    Fortgeschrittener
    Registriert seit
    07.10.2008
    Beiträge
    35

    Standard

    ahh okay...
    vielen dank für deine Bemühungen... jetzt ist alles klar...
    das C++ Case-Sensetive wüsst ich eigentlich aber ich konnte mich noch nicht wirklich gut in die Syntax einarbeiteten....
    doch ich denke für erste versuche nichtma übel...

  8. #8
    Trojaner
    Registriert seit
    21.01.2007
    Beiträge
    66

    Standard

    Ja diese Fehler können jedem passieren,auch ich mache ab und an mal nen Synthaxfehler,das machen selbst Profis.

    Ich würde dir aber empfehlen reines C++ zu lernen.Das .Net Framework ist zwar eine gute Erfindung und für nicht stark Systembelastene Applikationen eine alternative schnell zum Ziel zu kommen, doch ich habe gemerkt das dadurch C++ seine ganze Geschwindigkeit genommen wird.Wenn du nen normalen C++ Compiler hast, mache ich dir dein beispiel mal in dem Code und du wirst sehen es ist schneller.

    Alle die im .Net Bereich entwickeln sollen daurch nicht angegriffen werden,arbeite selber überwiegend mit C# und man kann damit sogar
    Spiele,die mit der heutigen Grafik mithalten entwickeln,aber bei C++
    sollte man eben nicht auf die .Net Variante zurückgreifen.

    In .Net hat man zwar seine schönen StreamReader um schnell in Datein zu schreiben und alle anderen möglichen Klassen die einen viel arbeit abnehmen, aber der Aufwand in reinem C++ lohnt sich, aber nur wenn man es wirklich braucht.Man sollte sich immer merken das man zu der Sprache greift die am effektivsten und schnellsten bei guter Leistung zum Ziel führt.

  9. #9
    EinHaarPinsel Avatar von .wired
    Registriert seit
    05.10.2008
    Beiträge
    316

    Standard

    Ich hätte nen Rechner (6 Funktionen) incl. Switch-Case + Auskommentiert...in C++ nur ohne .net...

    Weiß ja net ob du sowas gebrauchen kannst...

    Gucks dir, wenn du willst mal an....

    -> http://uploaded.to/?id=x12pto (.rar ohne PW)
    MD5: 4894a6d039890f8a934dbbce3a6511e9
    gez.wired


  10. #10
    Trojaner
    Registriert seit
    21.01.2007
    Beiträge
    66

    Standard

    Hier ich habe dir mal den selben Code in C++ ohne .Net geschrieben und du wirst sehen das es schneller ist.

    Bei deinem jetzigen Programm brauch es nachdem kompilieren trotz eines Quad-Cores und 3 GB Ram ca. 2 Sekunden bis der Text ausgegeben wird
    "Bitte geben Sie ihren namen ein:" und bei der ohne .Net ist es sofort da.

    Was hier auch noch sehr schön ist man kann mit cin(console input) auch Datentypen von int und double schreiben lassen, wohingegen ich bei der .Net Variante nur den Datentyp String nehmen durfte und musste deshalb extra konvertieren.Mit cin, kann man aber leider den Datentyp string nicht nehmen,deshalb bei der Abfrage des Namens die Funktion getline().Man könnte es auch anders gestalten und einfach ein Array mit dem Datentyp char machen und cin würde wieder gehen,aber naja muss man selbst entscheiden was man macht.

    Code:
    #include <iostream>
    #include <conio.h>
    #include <string>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	double nummer1;
    	double nummer2;
    	double ergebniss;
    	string name;
    
    	cout << "Bitte geben Sie ihren Namen ein: ";
    	getline(cin, name);
    	cout << "Hallo " << name << " bitte geben Sie die erste Zahl ein: ";
    	cin >> nummer1;
    	cout << name << ", ihre erste Zahl lautet " << nummer1 << endl;
    	cout << name << ", bitte geben Sie die zweite Zahl ein: ";
    	cin >> nummer2;
    	ergebniss = nummer1 + nummer2;
    	cout << name << ", ihre erste Zahl lautete " << nummer1 << " und ihre zweite Zahl lautete " << nummer2 << endl;
    	cout << "Daraus ergibt sich: " << ergebniss;
    
    	getch();
    	
    	return 0;
    }

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •