|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 12.09.2002, 13:08 Titel: Syntax Richtig, Programm stürtzt ab, was tun? |
|
|
Hi, hier werde ich alle Fehler, bei denen die Syntax richtig ist, der Debugger nicht viel weiter hilft und ich keine Ahnung mehr hab, hier posten (in der Hoffnung ihr könnt mir helfen) .
Fehler Nummer 1:
Das Programm stürtzt ab, der Debugger meint:
"Unbehandelte Ausnahme in BLABLA.exe : 0xC0000005: Access Violation."
(Ist ne MessageBox mit "OK" Button, aber nich von mir)
Über der Zeile über dem "Gelben Pfeil" wird im Konstruktor meiner Grafikkontrollklasse ein Attribut (int - Variable) einer Struktur in einem Feld, welches ein "public" Member der Klasse ist.
Was kann ich machen? |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 12.09.2002, 14:15 Titel: |
|
|
den fehler kenn ich , hatte ich auch schon öfters, aber ohne quelltext kann ich dir nicht helfen , wenn überhaupt _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 12.09.2002, 14:22 Titel: |
|
|
Ich schick ihn dir mal, muss ja nicht gerade jeder den halben Quelltext von meinem Spiel gesehen haben (nichts gegen euch, aber solange ein Projekt von mir noch nicht fertig gestellt ist, veröffentliche ich ungern den Quelltext).
Da du aber keine E-Mail Adresse angegeben hast, wird mir das schwerfallen, könntest du mir sie mailen?
Jeder der ernsthaft glaubt mir helfen zu können, so mir mailen! |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 12.09.2002, 14:35 Titel: |
|
|
Du brauchst nicht den ganzen Code mailen, es reicht der Codeauschnitt in dem der Fehler auftritt. Du siehst doch die Codestelle an der es passiert, oder? |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 12.09.2002, 14:40 Titel: |
|
|
Also ich hab ne Struktur (ImageDesc) in der verschiedene Eigenschaften eines "Images" beschrieben sind:
Code: |
//bissl gekürzt:
struct ImageDesc
{
public:
intImage_Width ;//Breite des Images
intImage_Height ;//Höhe des Images
};
|
Und im Konstruktor der GKK stehen folgende Zeilen:
Code: |
this->ImageArray[0].Image_Width = 87;
this->ImageArray[0].Image_Height= 87;
this->ObjectArray[0]->Object_Priority = 10; // Hier ist dann der Gelbe Pfeil
|
Ich hoffe das bischen kann euch helfen mir zu helfen... |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 12.09.2002, 17:40 Titel: |
|
|
prüf doch mal was
this->ObjectArray[0]->Object_Priority
für einen wert hat. Null vileicht? |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 12.09.2002, 18:04 Titel: |
|
|
"ObjectPriority - CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden
DrawObject - CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden"
Wie kann das sein?
"
Ausdruck kann nicht ausgewertet werden
Der Ausdrucksauswerter des Debuggers kann keinen Wert für den angegebenen Ausdruck erhalten. Ein möglicher Grund ist, daß sich der Ausdruck auf Speicher bezieht, der außerhalb des Speicherbereichs des Programmes liegt (Derefenzierung eines Null-Zeigers ist ein Beispiel). Windows NT und Windows 95 erlauben nicht, daß auf Speicher außerhalb des Adreßbereichs des Programmes zugegriffen wird.
"
meint VC 6.0 dazu.
Was muss ich machen? |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 12.09.2002, 18:11 Titel: |
|
|
ist vileicht auch this->ObjectArray[0] = Null?
und this->ObjectArray ?
und prüf zur sicherheit auch den this zeiger.
du hast anscheinend dem array keinen speicher mit malloc oder new zugewiesen. guck doch mal nach wo das alles initialisiert wird. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 12.09.2002, 19:18 Titel: |
|
|
Richtig, es scheint kein Array "ObjectArray[0]" zu geben, zumal du dann noch einen Adressoperator verwendest, also ObjectArray ein **-Type sein müsste. Warscheinlich ist der speicher nicht richtig allokiert und dein Programm greift auf nicht reservierten Speicher zu - deshalb Acces Violation, was ja nichts weiter als Zugriffsverletzung heißt...
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 12.09.2002, 20:02 Titel: |
|
|
Setz doch einfach mal ein paar ASSERTS und guck, was passiert. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 14.09.2002, 10:38 Titel: |
|
|
Ich hab´s jetzt hingekriegt, aber zu erklären was es war ist ein bissl kompliziert...
Aber egal, Ich hab nähmlich noch ein Problem.
Fehler Nummer 2:
Bei der Funktion Load Image tritt ein Fehler auf, die Syntax aber ist richtig.
Code: |
assert(Image);
assert(Image->Image_File);
HRESULT hr;
Image->Image_BitmapHandle = (HBITMAP)LoadImage(NULL,Image->Image_File,IMAGE_BITMAP,Image->Image_Width,Image->Image_Height,LR_LOADFROMFILE);
if(Image->Image_BitmapHandle == NULL)
{
Error("Grafik-Kontroll-Klasse:\n Fehler bei der Funktion <Create_Image> !\n Funktionsaufruf <LoadImage>\n",this->hWnd);
return -1;
}
|
Die "Asserts" melden keine Problem, für "Image" wurde auch Spiecher reserviert und bei der Ausführung kommt die Fehlermeldung.
Habt ihr hier ne Idee?
PS:
Vielen Dank für eure Hilfe, helft mir hier bitte genauso "erfolgreich" ! |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 14.09.2002, 12:31 Titel: |
|
|
Mit der Fehlermeldung meinst du Wahrscheinlich den If-Zweig. Das das Handle NULL ist, kann verschiedene Gründe haben, z.B. die Datei wurde nicht gefunden, wird gerade von anderen Prozessen verwendet usw...
Ein GetLastError hilft in diesem Fall, eine Detailiertere Fehlermeldung zu erhalten. Den Fehlercode mußt du dann natürlich noch mit der MSDN vergleichen, um rauszubekommen, woran es lag.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 14.09.2002, 14:16 Titel: |
|
|
Das mit dem GetLastError() hab ich schon versucht, aber nicht so ganz verstanden. Könntest du mal schreiben wie das geht? |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 14.09.2002, 14:40 Titel: |
|
|
GetLastError gibt eine Zahl zurück. Diese ist ein Fehlercode, der entweder in einer switch-Schleife abgefragt werden kann (Die müsste dann aber ca. 500 Einträge haben) oder man schaut manuell nach, was der Fehler bedeutet und behebt ihn.
Das ist alles
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 14.09.2002, 19:02 Titel: |
|
|
Vieleicht hältst du mich für blöd aber, wo nachschauen?
Ich hab unt dem Eintrag für "GetLastError" ne Liste gefunden, aber da gabs den Error Code nicht. Meiner lautet " -858993460 ", zumindest hat meine Variable im Debugger den Wert.
Code: |
if(FAILED(hr))
{
int ErrorCount = GetLastError(); //Im Debugger steht dann die oben angegebene Zahl.
}
|
Mach ich was falsch? |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|