Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 17:27

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: SIGSEV bei SDL-Klasse
BeitragVerfasst: Di Apr 26, 2005 14:42 
Offline
DGL Member

Registriert: Di Apr 26, 2005 14:25
Beiträge: 3
hi,
Ich bin gerade dabei mir ne kleine 2D-Engine zu basteln und der erste Schritt dabei ist das programmieren einer kleinen SDL-Wrapper Klasse.
Doch schon hierbei hapert es :roll:

Versuch ich mein Programm zu starten kompiliert er es zunächst Problemlos ,doch nach dem starten bekomme ich ein Popup mit einer SIGSEV nachricht welches mich auf diese procedure meiner Klasse verweist:
Code:
  1.  
  2.  procedure TScreen.flip;
  3.  begin
  4.       SDL_GL_SwapBuffers;
  5.  end;
  6.  


Ich kann mir ehrlichgesagt nicht vorstellen wo da der Fehler sein könnte, zumal ich diesen SDL-Wrapper auch schon in C++ verwendet habe...
Falls ihr noch nähere Informationen braucht lasst es mich Wissen. (hab auch Quellcode der Klasse beigelegt ,ist sehr wenig)

Danke für die Hilfe, n!x:wink:

P.S: Ich möchte noch schnell darauf hinweisen das ich kein Delphi sondern fpc verwende (dürfte aber wohl hierbei keinen unterschied machen).


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 27, 2005 06:57 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Bist du dir sicher das du SDL richtig initialisiert hat?
Du rufst ja nur SDL_INIT(SDL_INIT_VIDEO) und SDL_SetVideoMode auf.
Die Varibale FFlags enthält aber (zumindest im Quellcode) keine Flags.
Vorallem nicht dem Flag SDL_OPENGL.
Somit ist das SDL-OpenGL-System nicht initialisiert und der Befehl Flush kann nicht funktionieren.

Andere Frage:
Müsste es nicht:
TScreen =class(TObject)
heissen?
TScreen=class
bedeutet doch nur, dass später eine Classe mit den Namen noch definiert wird?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 27, 2005 10:08 
Offline
DGL Member

Registriert: Mi Apr 13, 2005 16:06
Beiträge: 67
Wohnort: Fulda
i0n0s hat geschrieben:
Andere Frage:
Müsste es nicht:
TScreen =class(TObject)
heissen?
TScreen=class
bedeutet doch nur, dass später eine Classe mit den Namen noch definiert wird?


Nein, zumindest bei Delphi sind class und class(TObject) gleichbedeutend.

Robert


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 27, 2005 12:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Da hat Robert recht. In Delphi stammen alle Klassen immer von TObject ab. Den Klassenamen definierst du nur dann, wenn direkt dahinter ein Semikolon steht.

Ich weiß nicht ob das Probleme machen kann. Aber in Delphi ist die Klasse TScreen bereits definiert. Glaube aber nicht, dass es daran liegt, da sonst der Kompiler bereits gespruckt hätte.

Meintest du vielleicht SIGSEGV? Und dazu hat mir Google folgendes ausgespuckt. Da wird gezeigt, dass so etwas passiert, wenn man auf einen nicht initialisierten Pointer zugreift. Würde also Schlussfolgern, dass das Laden des Pointers der Methode SDL_GL_SwapBuffers nicht geklappt oder nicht stattgefunden hat.

PS: Kann es sein, dass du unter Linux entwickelst?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 27, 2005 14:14 
Offline
DGL Member

Registriert: Di Apr 26, 2005 14:25
Beiträge: 3
ok, erstmal danke für eure hilfe...


@i0n0s:
ich bin mir zwar nicht sicher ob ich SDL richtig initialisiert habe, aber FFlags hab ich flags übergeben
Code:
  1.  
  2.  constructor TScreen.create(width,height,bpp,flags :integer; name <!-- s:P --><img src=\"{SMILIES_PATH}/icon_razz.gif\" alt=\":P\" title=\"Razz\" /><!-- s:P -->Char);
  3.  begin
  4.       inherited create;
  5.      
  6.       FFlags :=SDL_OPENGL; //Hier bekommt FFlags seinen Wert
  7.       FWidth :=width;
  8.       FHeight :=height;
  9.  
  10.       ...
  11.  end;
  12.  


@Lossy eX:
sorry, ich meinte natürlich SIGSEGV!
Unter Linux entwickle ich nicht ,hab aber noch vor das Projekt auf Linux zu porträtieren.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]