JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3685d41d400187e3747837323f3fd6d8Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Syntax Richtig, Programm stürtzt ab, was tun?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 13:08    Titel: Syntax Richtig, Programm stürtzt ab, was tun? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 14:15    Titel: Antworten mit Zitat

den fehler kenn ich , hatte ich auch schon öfters, aber ohne quelltext kann ich dir nicht helfen , wenn überhaupt Very Happy
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 14:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 14:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 14:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 17:40    Titel: Antworten mit Zitat

prüf doch mal was

this->ObjectArray[0]->Object_Priority

für einen wert hat. Null vileicht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 18:04    Titel: Antworten mit Zitat

"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 18:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 19:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 12.09.2002, 20:02    Titel: Antworten mit Zitat

Setz doch einfach mal ein paar ASSERTS und guck, was passiert.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 14.09.2002, 10:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 14.09.2002, 12:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 14.09.2002, 14:16    Titel: Antworten mit Zitat

Das mit dem GetLastError() hab ich schon versucht, aber nicht so ganz verstanden. Könntest du mal schreiben wie das geht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 14.09.2002, 14:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 14.09.2002, 19:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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

Impressum