Compiler
-
Wenn er nach dem Druck auf F5/Play-Taste das Konsolenfenster öffnet, führt er offensichtlich dein Programm aus. Mit dem Buildvorgang ist also wahrscheinlich alles in Ordnung. Die Build-Ausgabe siehst du im Ausgabefenster (in der Liste "Erstellen" auswählen).
Mir scheint, du weißt nicht mit dem Debugger umzugehen. Das solltest du ändern. Der Debugger ist ein wichtiges Werkzeug, mit dem sich jeder Programmierer auskennen sollte. Lies dich da mal schlau! Und für den Anfang: erstelle dein Projekt als Debug-Version (da ist eine Listbox oben in der Toolbar mit mindestens Release und Debug zur Auswahl), setze einen Haltepunkt in der ersten Zeile der main-Funktion (F9) - und staune, dass du das Programm zur Laufzeit anhalten kannst!
-
Tufelix schrieb:
Swordfish schrieb:
Warum prüfst du nicht, ob die Dateien überhaupt geöffnet werden können?
ich benutz Microsoft Visual c++ 2010 Express, das stellt doch schon beim öffnen des projekts fest ob die dateien geöffnet werden können.
Warum sollte sich eine IDE darum kümmern ob irgendwelche Dateien, die dein Programm zur Laufzeit versucht zu öffnen, beim laden des Projekts existieren!?
Tufelix schrieb:
Beim Debuggen jedenfalls öffnet es alle dateien erfolgreich.
Ach? Woran erkennst du das?
Tufelix schrieb:
Nun der Compiler höhrt bei dieser zeile auf und öffnet das consolenfenster
int main(){
Würde der /Compiler/ bei dieser Zeile "aufhören", würde er dir als Fehlermeldung auch verraten, warum er das tut.
Tufelix schrieb:
jetzt vermute ich das der Builtvorgang nicht startet.
Wenn der Build nicht starten wuerde, wuerde es dir VS sagen und dich fragen, ob es den letzten erfolgreichen Build ausführen soll.
-
könnt ihr eigentlich den code bei euch erflogreich starten oder ist gibts da auch ein fehler?
-
Ok, dann eben weiter:
Tufelix schrieb:
tSprache Sprache[9999999];
Wtf? Das sind ~600 MB auf dem Stack! Nimm einen
std::vector
!
Warum globale Variablen?
-
Der hier ist zu groß für den Stack:
tSprache Sprache[9999999];
Sowas als Globale zu lösen, ist sowieso sehr unschön...
-
joar die war auch anfangs eingebaut aber die hat nicht die class akzeptiert:
class tSprache{ public: string Binärcode; string Name; };
-
Tufelix schrieb:
joar die war auch anfangs eingebaut aber die hat nicht die class akzeptiert
Was?
-
ok ich bau dann der vector wieder ein
-
Tufelix schrieb:
ok ich bau dann der vector wieder ein
Aber bitte nicht als Globale!
-
ok dann bau ich sie in der main-anweisungsblock ein und benutz ein zeiger um die sprache an die CodiereSprache funktion zu übergeben.
-
Tufelix schrieb:
[...] und benutz ein zeiger um die sprache an die CodiereSprache funktion zu übergeben.
Bitte, bitte nimm eine Referenz!
-
jop das meine ich ja
-
mmh die codiereSprache funktion tun noch nicht richtig...
-
Tufelix schrieb:
mmh die codiereSprache funktion tun noch nicht richtig...
Mit der "Fehlerbeschreibung" kann keiner was anfangen. Leuchtet ein, oder? Wie wär's mit Fehlerbeschreibung, eventuell Fehlercode, fehlerhafter Code...?
-
wie kann ich jetzt was in den vector hinein tun? ich muss ja einer der 2 Variabelen in der klasse auswählen, muss ich da ne igene funktion schreiben oder gibts da auch ne andere möglichkeit?
-
Vielleicht willst du einen Konstruktor.
#include <vector> #include <string> #include <iostream> struct foo_t { std::string a; std::string b; foo_t( const std::string ¶m_a, const std::string ¶m_b ) : a( param_a ), b( param_b ) { } }; int main() { std::vector< foo_t > bar; bar.push_back( foo_t( "Hugo", "Sepp" ) ); bar.push_back( foo_t( "Xaver", "Max" ) ); for( std::vector< foo_t >::iterator i = bar.begin(); i != bar.end(); ++i ) { std::cout << i->a << ", " << i->b << '\n'; } }
-
ok danke, jetzt tut der übersetzt einwandfrei.
-
Nun als ich eine kompexe sprache dem übersetzter einlesen habe kam es zu einem Fehler(string subscript out of range) wärend die "CodiereSprache"funktion die 12. zeile des "Sprach text" bearbeitet.Komischerweise ist das bei jeder Sprache die ich einlese so.Hat wer ne idee an was das liegen könnte?
CodiereSprache:
void CodiereSprache(string Satz ,vector<tSprache> &Sprache) { int SpalteBinär=0; while(isalnum(Satz[SpalteBinär])!=0 && isalnum(Satz[SpalteBinär+1])!=1) { SpalteBinär++; } int Ende=SpalteBinär; SpalteBinär++; int Spalte=SpalteBinär; while(isalnum(Satz[SpalteBinär])!=0 && isalnum(Satz[SpalteBinär+1])!=1) { SpalteBinär++; } Sprache.push_back(tSprache(Satz.substr(0,Ende),Satz.substr(Spalte,SpalteBinär))); cout <<Spalte<<" " << SpalteBinär<<endl;
-
Das Problem tritt wahrscheinlich eher bei der Zeile davor auf (Zeile 10). Mach dort mal einen Haltepunkt und überprüfe, ob
Satz[SpalteBinär+1]
auch wirklich im gültigen Bereich ist. Wahrscheinlich istSpalteBinär+1
größer alsSatz.size()
(oder kleiner als 0).
-
ich meinte die zeile 12 im text der der übersetzer übersetzt -.-