Autor Beitrag
[emptyBox]
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN XP Prof
Delphi 7 Pers.
BeitragVerfasst: So 20.08.06 14:14 
hallo,

Der Pointer "img" funktioniert nicht, es folgt bei dem Start eine Fehlermeldung, mit der ich nichts anfagen kann^^
An der Bilddatei kann es nicht liegen, wenn mann die "img"-Variable einfach in die "var"s schreibt dann kann man es wunderbar benutzen...
es funst halt nur nicht mit dem -Type-

Hab ich irgendwelche Delphiregeln nicht beachtet??

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
program Project2;

uses
  SysUtils, SDL;

Type
   TPlayer = class
   private
      img  : PSDL_Surface;
   public
end;

var
   Pl1 : TPlayer;

   screen  : PSDL_Surface; // Bildschirm Surface (=Obefläche)
   rectPos : PSDL_Rect;    // Rect um Position des Bildes zu übergeben
   event   : TSDL_EVENT;   // Wird hier nur fürs beenden durch ESC gebraucht

   ENDE : Boolean;         // Wenn ENDE = TURE dann beende die Hauptschliefe

begin
  SDL.SDL_Init(SDL_INIT_VIDEO);

  screen := SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);

  Pl1.img := SDL_LoadBMP('bild.bmp'); //Hier wird "Bild.bmp" geladen
  ENDE := FALSE;

  //Hauptschleife
  while(ENDE = False) do
  begin
     SDL_FillRect(screen, nil, $0000ff);

     rectPos.x := 100;
     rectPos.y := 100;
     SDL_BlitSurface(Pl1.img, nil, screen, @rectPos);

     SDL_Flip(screen);

     while (SDL.SDL_PollEvent(@event)=1) do begin
        case event.type_ of
           SDL_KEYDOWN:
              case event.key.keysym.sym of
                 SDL.SDLK_ESCAPE: ENDE := TRUE;
              end;
        end;
     end;
  end;

end.


Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 20.08.06 23:56 
Moin!

Ich habe zwar keine Ahnung, was du da in dem Code tust, aber du erzeugst nirgendwo eine Instanz deiner Klasse und gibst diese auch nirgendwo frei -> damit ist deine Fehlermeldung ("es folgt bei dem Start eine Fehlermeldung, mit der ich nichts anfagen kann", und wo kämen wir hin, wenn du diese angegeben hättest, macht ja den ganzen Ratespaß kaputt... :roll:) vermutlich eine Zugriffverletzung an Adresse 0<=n<100? ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
[emptyBox] Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN XP Prof
Delphi 7 Pers.
BeitragVerfasst: Di 22.08.06 18:43 
Dann will ich das fröhliche Ratespielchen mal auflösen ^^

Exception EAccessViolation in module Shooter.exe at 00007EB9.
Access violation at adrdress 00407EB9 in module 'Shooter.exe'. Write of address 00000000

Wie gesat, mir sagt es nichts...

Und auf die Frage nach dem Zweck des Programms kann ich dir sagen, dass es nicht das komplette Programm ist. Ich hab alles andere Rausgenommen, bis auf den 'Fehler', damit es übersichtlich bleibt für Leute die mir helfen wollen. Jetzt wird also nur 'Bild.bmp' gezeichnet.
Die Fehlermeldung stammt jedoch nicht aus dem Beispielcode sondern aus dem komletten Projekt.
Kannst du mir noch mal genau erklären was ich bei der Klasse beachten muss?
Was ist eine Instanz? ^^

thx
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 22.08.06 18:46 
Moin!
ausblenden Delphi-Quelltext
1:
2:
3:
Pl1 := TPlayer.Create;
// später
Pl1.Free;

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.