hi leute, hab da ein problem mit sdl_rect in delphi, naja, nicht direkt mit sdl_rect sondern mit seiner verwendung
Code:
procedure player_coords();
begin
player_r.x := 200;
player_r.y := 200;
end;
funktioniert alles wunderbar, in var hab ich player_r : PSDL_Rect; stehen, von daher gibt er es wunderbar aus, nur im sobald ich es in meine hauptschleife lad
Code:
procedure player_blit();
begin
SDL_BlitSurface(player,nil,screen,@player_r);
end;
begin
init_sdl();
player_surface();
while(not done) do
while SDL_PollEvent(@event) = 1 do
begin
player_coords();
player_blit();
SDL_UpdateRect(screen,0,0,0,0);
SDL_Flip(screen);
end;
end.
beendet das programm sofort nach dem starten wieder
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Beendet es wirklich kommentarlos? Passiert dies nur, wenn Du player_coords aufrufst? Bedenkst Du, dass PSDL_RECT ein Pointer ist und entsprechend reserviert werden muss? Ich vermute stark, dass Du von einer C/C++-Quelle portiert hast und eine TSDL_RECT existiert. Das würde ich vorziehen und somit auch diese ganze Pointergeschichte somit umgehen. Problem behoben?
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Naja, mal die Zeiel auskommentieren oder einen Breakpoint, wird ja wohl drinne sein oder? Hast Du meine Ratschläge überhaupt beherzigt und was waren deren Ergebnisse?
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
ich will gar nichts von dir, sondern anders herum und irgendwie habe ich das Gefühl dass Du nicht auf meine Hilfestellung eingehest.
1. Kommentiere player_coords(); aus :
Code:
// player_coords();
Beendet er dann immer noch Grundlos?
2. Hast Du PSDL_RECT durch ein TSDL_RECT ausgetauscht?
Ansonsten solltest Du Dich unbedingt mit dem Debuggen von Programmen befassen. Wir haben dazu auch ein Tutorial von Delphic. So ohne es nachzubauen und uns einzuarbeiten fällt es ohne konkrete Frage schwer eine Lösung zu finden. Zudem fällt es mir schwer zu Glauben, dass er das Programm einfach so beendet, da ich eigentlich mit einer Exception rechnen würde. Es könnte sich von daher lohnen die eigentliche Renderloop in ein try..except zu setzen und entsprechend eine Meldung auszugeben.
Den die einzige Situation in der er hier das Programm ohne irgend eine Darstellung beenden sollte wäre wenn das Programm korrekt initalisiert wird. Das sehe ich spontan allerdings nirgends. Setze einmal eine Meldung beim Ende des Programmes, dann siehst Du schnell, ob er vorher irgendwo aussteigt ohne aus irgend einen Grund die Schleife vorzeitig verläßt. Tut er dies, nehme nacheinander die einzelnen Anweisungen aus der Loop und voila schon hast Du jene, die das Problem verursacht und man kann sich diese genauer ansehen.
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Di Nov 29, 2005 21:11 Beiträge: 88 Wohnort: Bonn
ich hatte gerade das selbe problem - also dass sich das programm ohne große worte verabschiedet.
ich habe dann dst und src nicht als PSDL_Rect sondern als TSDL_Rect deklariert.
dann hat sich allerdings die blit funktion beschwert, weil die PSDL_Rect erwartet
und zum guten schluß habe ich im aufruf der blit funktion ein @ vor src und dst gesetzt, nun lüppt's
ich weiß, dass dieser thread ein paar jahre als ist und dem thread-starter durch diese antwort vermutlich nicht mehr geholfen werden kann - aber ich hatte gerade so nen "HA! Nich mit mir, elendes Delphi - So nicht! HARHARHAR" - Moment
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.