AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2D - graues Fenster

Ein Thema von Noobmaster · begonnen am 19. Jul 2010 · letzter Beitrag vom 20. Jul 2010
Antwort Antwort
Seite 1 von 2  1 2      
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#1

Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 13:18
Hallo Leute!
Ich wollte jetzt einmal ein etwas "größeres" Projekt mit Lazarus angehen und kam auf die Idee ein 2d-Billardspiel zu programmieren. Da ich auf diverse Probleme gestoßen bin, habe ich mir gedacht, dass ich eine Bibliothek benutze (also zum Beispiel SDL oder Direct-X). Weil Andorra 2d aber extra für 2d-Spiele erstellt wurde und dort unter Lazarus auch Open GL unterstützt wird, habe ich Andorra 2d genommen und kompliliert. Beim Tutorial habe ich allerdings folgendes Problem: Bei mir kommt nicht der erhoffte Spruch "Andorra 2d works with Lazarus, too" im schwarzen Fenster, sondern nur das ganz normale graue Fenster "Form1". Der Name "Form1" verschwindet oben aus der Leiste und wenn ich Buttons über den Objektinspektor einbaue, dann werden diese in der laufenden Anwendung nicht gezeigt. Auch wenn ich die Fensterfarbe über den Objektinspektor verändere, bleibt das Fenster nach dem Programmstart grau.
Ich hoffe ihr könnt mir helfen und bedanke mich jetzt schonmal.

Der Link zum Tutorial und der so abkopierte Quellcode - Anmerkung: an einer Stelle steht dort @Idle, dort muss das @ weg soweit ich weiß
http://andorra.sourceforge.net/index.php?bb=lazarus1ger
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#2

AW: Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 13:55
Zitat:
und wenn ich Buttons über den Objektinspektor einbaue, dann werden diese in der laufenden Anwendung nicht gezeigt.
Versuchst du denn, normale TButtons über die Zeichenfläche von Andorra (OpenGL) zu legen?
Wenn ja, dann kann das gar nicht gut gehen. Über ein OpenGL-Fenster kannst du keine VCL/LCL-Controls legen.


Edit:
Meiner Meinung nach fehlt da auch noch in der Idle-Procedure ein "Done := false" am Schluss, oder täusche ich mich da?

Geändert von blackfin (19. Jul 2010 um 13:59 Uhr)
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 14:00
Ja, ich muss gestehen, dass ich genau das versucht habe. Allerdings würde mich auch viel mehr interessieren, wieso der Quellcode bei nicht so funktioniert, wie er im Tutorial angegeben wird...

Hier mein Quellcode:
Delphi-Quellcode:
unit Unit1;

{$MODE DELPHI}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, AdDraws, AdClasses;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
  procedure Idle(Sender: TObject; var Done:boolean);
  AdDraw : TAdDraw;
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraOGLLaz.dll';
  AdDraw.Initialize;
  Application.OnIdle := Idle;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdDraw.Free;
end;

procedure TForm1.Idle(Sender: TObject; var Done:boolean);
begin
  AdDraw.ClearSurface(0);
  AdDraw.BeginScene;
  with AdDraw.Canvas do
  begin
    Font := AdDraw.Fonts.GenerateFont('Arial', 24, []);
    TextOut(0,0,'Andorra 2D...');
    Font := AdDraw.Fonts.GenerateFont('Arial', 10, []);
    TextOut(0,30,'...works with Lazarus too');
  end;
  AdDraw.EndScene;
  AdDraw.Flip;
  Done := false;
end;

initialization
  {$I Unit1.lrs}

end.
Das Programm startet jetzt, aber danach tritt sofort ein SIGSEGV Fehler aus...
Dann springt der Cursor in eine Unit namens "AdFontFactory" in die Zeile "FLastKey := nil;"
Wo liegt jetzt der Fehler?

Geändert von mkinzler (20. Jul 2010 um 09:41 Uhr) Grund: Zitat-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

AW: Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 14:04
Was passiert denn, wenn du nach
AdDraw.Flip; noch ein
Done := false; setzt?

Ich befürchte, das Idle wird so nur einmal ausgeführt.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 14:11
Das mit dem Idle := false sollte nicht die Lösung des Problems sein...

Kannst du mal Testen, was passiert, wenn du nicht "Form1" als Parameter für TAdDraw.Create übergibst sondern "nil"?
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 14:30
Also ich habe den Parameter "self" ausprobiert und auch den Parameter "nil" jedes Mal tritt jetzt dieser SIGSEGV exception Fehler auf. Mein Quellcode steht oben
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Andorra 2D - graues Fenster

  Alt 19. Jul 2010, 15:02
Dann springt der Cursor in eine Unit namens "AdFontFactory" in die Zeile "FLastKey := nil;"
Wo liegt jetzt der Fehler?
Das würde eigentlich bedeuten, dass die Initialisierung fehlschlägt...

Verwendest du eigentlich Linux oder Windows, kompilierst du für 32 oder 64 Bit?

Edit: Gerade nochmal mit dem neusten Paket unter Linux getestet: Nachdem ich alle Abhängigkeiten installiert hatte und einige Symlinks für die gesuchten Bibliotheken erstellt habe lief zumindest die "NonVCL" Demo mit Lazarus ohne Probleme.

Ich Denke dein Problem könnte sein, dass du noch die folgenden Units einbinden musst:
AdComponentWindow, AdStdWindow Und füge mal wie in allen anderen Tutorials beschrieben die Fehlerbehandlung für den Fall ein dass die Initialisierung fehlschlägt und lasse dir mittels TAdDraw.GetLastError die letzte Fehlermeldung ausgeben.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein

Geändert von igel457 (19. Jul 2010 um 15:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Andorra 2D - graues Fenster

  Alt 20. Jul 2010, 09:34
Hi!

1. Verwendest du Windows oder Linux? 32 oder 64 Bit?

2. Ich vermute die Anwendung kann die AndorraOGLLaz.dll nicht finden. Liegt die denn im selben Verzeichnis, in dem auch die Anwendung erzeugt wird (im Fall von Windows)?

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Andorra 2D - graues Fenster

  Alt 20. Jul 2010, 10:08
Folgendes hat sich geändert: Ich habe die dll in den Ordner der Exe kopiert. Ich habe die Fehlerbehandlung eingebaut und tatsächlich beschwert er sich nun, dass die Initialisierung fehlgeschlagen ist.
Ich benutze übrigens Windows 32Bit.
Hier mein momentaner Quellcode:
Delphi-Quellcode:
unit Unit1;

{$MODE DELPHI}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, AdDraws, AdClasses,AdComponentWindow,AdStdWindow;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
  procedure Idle(Sender: TObject; var Done:boolean);
  AdDraw : TAdDraw;
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdDraw := TAdDraw.Create(Form1);
  AdDraw.DllName := 'AndorraOGLLaz.dll';
  if AdDraw.Initialize then
  begin
    Application.OnIdle := Idle;
  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display'+
                'mode or another video adapter.');
    halt;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdDraw.Free;
end;

procedure TForm1.Idle(Sender: TObject; var Done:boolean);
begin
  AdDraw.ClearSurface(0);
  AdDraw.BeginScene;
  with AdDraw.Canvas do
  begin
    Font := AdDraw.Fonts.GenerateFont('Arial', 24, []);
    TextOut(0,0,'Andorra 2D...');
    Font := AdDraw.Fonts.GenerateFont('Arial', 10, []);
    TextOut(0,30,'...works with Lazarus too');
  end;
  AdDraw.EndScene;
  AdDraw.Flip;
  Done := false;
end;

initialization
  {$I Unit1.lrs}

end.
Woran könnte es liegen, dass die Initialisierung fehl geschlagen ist?
Muss ich noch irgendetwas in den Ordner kopieren, in dem meine .exe-Datei liegt?

Geändert von mkinzler (20. Jul 2010 um 12:57 Uhr) Grund: Quote-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Andorra 2D - graues Fenster

  Alt 20. Jul 2010, 12:47
Bau doch mal statt der festen Meldung ein
ShowMessage(AdDraw.GetLastError); in deine Routine ein. Dann bekommst du vielleicht einen etwas aussagekräftigeren Fehler.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz