Einzelnen Beitrag anzeigen

Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#6

Re: FormCreate wird nicht ausgeführt

  Alt 5. Aug 2009, 11:36
Ok, nachdem ich in jedes Form Show das Idle neu gesetzt habe, läuft das erstmal, allerdings erhalte ich beim beenden eine Zugriffsverletzung:
Zitat:
Erste Gelegenheit für Exception bei $75B3FBAE. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 0048526B in Modul 'Strategiespiel.exe'. Lesen von Adresse 027F9F10'. Prozess Strategiespiel.exe (2360)
Die Form Creates und Destroys:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i, zufall:Integer;
begin
  Randomize;
  ReportMemoryLeaksOnShutdown := true;
  AdPerCounter := TAdPerformanceCounter.Create;

  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraDX93D.dll';

  if AdDraw.Initialize then
  begin
    Application.OnIdle := Idle;
    AdImageList := TAdImageList.Create(AdDraw);
    with AdImageList.Add('boy') do
    begin
      Texture.LoadGraphicFromFile('Bilder/boy.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('baker') do
    begin
      Texture.LoadGraphicFromFile('Bilder/baker.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('miller') do
    begin
      Texture.LoadGraphicFromFile('Bilder/miller.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('miner') do
    begin
      Texture.LoadGraphicFromFile('Bilder/miner.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('lumberjack') do
    begin
      Texture.LoadGraphicFromFile('Bilder/lumberjack.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;

    with AdImageList.Add('BG') do
    begin
      Texture.LoadGraphicFromFile('Bilder/BG.bmp',true,clFuchsia);
      {PatternWidth := 96;
      PatternHeight := 96;    }

    end;
    AdImageList.Restore;
    //Erzeugen des Partikelsystems
    partsys := TAdParticleSystem.Create(AdDraw);
    //Zuweisen des Bildes
    partsys.Texture := AdImageList.Items[0].Texture;
    AdGUI := TAdGUI.Create(AdDraw); //Erzeugen der Klasse
    AdGUI.Skin.LoadFromFile('Bilder/sunna.axs'); //Laden des Skins
    AdGUI.Cursors.LoadFromFile('Bilder/cursors.xml'); //Laden der Cursor
    AdGUI.LoadFromFile('Bilder/gui.axg'); //Laden der GUI
    AdConnector := TAdGUIConnector.Create(AdGUI); //Erzeugen des GUI Connectors
    AdConnector.ConnectEventHandlers(AdDraw.Window); //Verknüfen mit dem Elternfenstersystem
    //SpriteEngine erzeugen
    AdSpriteEngine := TSpriteEngine.Create(nil);
    AdSpriteEngine.Surface := AdDraw;

    for i := 0 to 9 do
    begin
      with TFigur.Create(AdSpriteEngine) do
      begin
        zufall := random(5);
        case zufall of
          0: Image := AdImageList.Find('boy');
          1: Image := AdImageList.Find('baker');
          2: Image := AdImageList.Find('miller');
          3: Image := AdImageList.Find('miner');
          4: Image := AdImageList.Find('lumberjack');
        end;
        AnimActive := true;
        AnimLoop := true;
        AnimSpeed := 15;
        XSpeed := -(random(100)+50);
        SetLine;
      end;
    with TBackgroundSprite.Create(AdSpriteEngine) do begin
      Image:=AdImageList.Find('BG');
      z:=-1;
      Depth:=10;
    end;
end;

  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display '+
                'mode or another video adapter.');
    Close;
  end;



  TAdButton(AdGUI.FindComponent('Start')).X := (ClientWidth div 2) - (TAdButton(AdGUI.FindComponent('Start')).Width div 2);
  TAdButton(AdGUI.FindComponent('Start')).Y := (ClientHeight div 4) - (TAdButton(AdGUI.FindComponent('Start')).Height div 2);
  TAdButton(AdGUI.FindComponent('Start')).OnClick := Start;

  TAdButton(AdGUI.FindComponent('Optionen')).X := (ClientWidth div 2) - (TAdButton(AdGUI.FindComponent('Optionen')).Width div 2);
  TAdButton(AdGUI.FindComponent('Optionen')).Y := ((ClientHeight div 4) * 2) - (TAdButton(AdGUI.FindComponent('Optionen')).Height div 2);
  TAdButton(AdGUI.FindComponent('Optionen')).OnClick := Options;

  TAdButton(AdGUI.FindComponent('Beenden')).X := (ClientWidth div 2) - (TAdButton(AdGUI.FindComponent('Beenden')).Width div 2);
  TAdButton(AdGUI.FindComponent('Beenden')).Y := ((ClientHeight div 4) * 3) - (TAdButton(AdGUI.FindComponent('Beenden')).Height div 2);
  TAdButton(AdGUI.FindComponent('Beenden')).OnClick := Beenden;

  HintWindowClass := TGraphicHintWindow;
  Application.ShowHint := False;
  Application.ShowHint := True;
  {CL:=loadIni(DE);
  if CL<>nil then
  fillProps([form1],CL); }

end;

Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdConnector.Free;
  AdGUI.Free;
  AdSpriteEngine.Free;
  AdImageList.Free;
  AdPerCounter.Free;
  AdDraw.Free;
  partsys.Free;
end;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var i: Integer;
begin
  ReportMemoryLeaksOnShutdown := true;
  AdPerCounter2 := TAdPerformanceCounter.Create;

  AdDraw2 := TAdDraw.Create(self);
  AdDraw2.DllName := 'AndorraDX93D.dll';

  if AdDraw2.Initialize then
  begin
    Application.OnIdle := Idle;
    AdImageList2 := TAdImageList.Create(AdDraw2);
    AdImageList2.Restore;
    //Erzeugen des Partikelsystems
    partsys := TAdParticleSystem.Create(AdDraw2);
    //Zuweisen des Bildes
    //partsys.Texture := AdImageList2.Items[0].Texture;
    AdGUI2 := TAdGUI.Create(AdDraw2); //Erzeugen der Klasse
    AdGUI2.Skin.LoadFromFile('Bilder/sunna.axs'); //Laden des Skins
    AdGUI2.Cursors.LoadFromFile('Bilder/cursors.xml'); //Laden der Cursor
    AdGUI2.LoadFromFile('Bilder/gui.axg'); //Laden der GUI
    AdConnector2 := TAdGUIConnector.Create(AdGUI2); //Erzeugen des GUI Connectors
    AdConnector2.ConnectEventHandlers(AdDraw2.Window); //Verknüfen mit dem Elternfenstersystem
    //SpriteEngine erzeugen
    AdSpriteEngine2 := TSpriteEngine.Create(nil);
    AdSpriteEngine2.Surface := AdDraw2;
    with AdDraw2.Display do
    begin
      Width := 800;
      Height := 600;
      BitDepth := ad32Bit; //Die Farbtiefe. Hierbei sind die Werte "ad16Bit" und "ad32Bit" erlaubt.
      DisplayMode := dmFullscreen;
    end;
  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display '+
                'mode or another video adapter.');
    Close;
  end;
  Form2.Close;
  HintWindowClass := TGraphicHintWindow;
  Application.ShowHint := False;
  Application.ShowHint := True;
end;
Delphi-Quellcode:
procedure TForm2.FormDestroy(Sender: TObject);
begin
  AdGUI2.Free;
  AdConnector2.Free;
  AdSpriteEngine2.Free;
  AdImageList2.Free;
  AdPerCounter2.Free;
  AdDraw2.Free;
end;
Danke, mfG
EDIT:
Es wird auch nicht im Vollbild ausgeführt...
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat