AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektordner
Thema durchsuchen
Ansicht
Themen-Optionen

[Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektordner

Ein Thema von Glocke89 · begonnen am 9. Mai 2010 · letzter Beitrag vom 21. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Glocke89
Glocke89

Registriert seit: 2. Mär 2007
Ort: Thüringen
80 Beiträge
 
Lazarus
 
#1

[Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektordner

  Alt 9. Mai 2010, 10:55
Hi,

wenn ich in den Compilereinstellungen bei "Andere Units" den Pfad zur Andorra 2D src eingebe (/home/glocke/Programmierung/Lazarus/ad2d_451/src/) und dann mein projekt compiliere, werden haufenweise Andorra2D src-Dateien ins Projektverzeichnis kopiert. Ich glaube nicht, dass das Sinn und Zweck der Sache ist

Andorra: 0.451
Lazarus: 0.9.28.2-0 Beta

LG Glocke
Christian
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

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

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 9. Mai 2010, 13:32
Hi!

Meinst du wirklich Quelltextdateien (also *.pas) oder kompilierte Units (*.o, *.ppu)? Im ersten Fall ist das seltsam und im zweiten Fall "by design".
Im Gegensatz zu Delphi kompiliert Free Pascal die Units nicht im selben Verzeichnis, falls kein Unitausgabepfad angegeben ist, sondern im Verzeichnis des Hauptquelltextes. Ich empfehle dir also so oder so immer ein Unitausgabeverzeichnis in den Compilereinstellungen anzugeben, da dies deinen Projektordner "sauber" hält. Den Ordner, den ich immer angebe ist obj\$TargetCPU()-$TargetOS() (unter Linux natürlich mit "/" statt "\"), was z. B. unter Win32 den Ordner obj\i386-win32 relativ zur Projektdatei (*.lpi) bezeichnet (Lazarus erstellt diesen Ordner übrigens automatisch). Allerdings wird hier dann auch die fertige Anwendung hinkompiliert. Um dies zu verhindern solltest du unter Projekt->Projekteinstellungen->Anwendung->Zieldateiname noch $NameOnly($ProjFile()) angeben, so wird die Anwendung nämlich in deinem Projektverzeichnis unter dem Namen deiner Projektdatei erzeugt.

Für Andorra2D wäre es wahrscheinlich empfehlenswert ein Lazarus-Package anzulegen (ich sollte wohl mal einen Featurerequest machen ). Dieses muss man ja nichteinmal bei Lazarus installieren, um es verwenden zu können, und die Andorra2D Units bleiben in einem eigenem Quelltextverzeichnis.
(ich liebe Packages unter Lazarus... im Gegensatz zu Delphipackages )

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

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

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 9. Mai 2010, 18:27
Wenn jemand ein Package von Andorra 2D erstellen könnte wäre das prima, ich persönlich bin jedoch noch nicht dahinter gestiegen, wie ich ein Package erstelle, das einfach nur die entsprechenden Units in den Suchpfad aufnimmt ohne zu versuchen immer alle Units zu kompilieren.
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
Benutzerbild von JamesTKirk
JamesTKirk

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

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 9. Mai 2010, 18:38
Zitat von igel457:
Wenn jemand ein Package von Andorra 2D erstellen könnte wäre das prima, ich persönlich bin jedoch noch nicht dahinter gestiegen, wie ich ein Package erstelle, das einfach nur die entsprechenden Units in den Suchpfad aufnimmt ohne zu versuchen immer alle Units zu kompilieren.
Das geht auch nicht anders. Es werden einmal alle zum Package gehörenden Units durchkompiliert und dann hat sich die Sache (bis man die Zieleinstellungen ändert -.-). Wenn eine bestimmte Unit unter Free Pascal nicht kompiliert, so darf man sie einfach nicht zum Package hinzufügen (sie sollte dann natürlich auch nicht im Code verwendet werden ). Zudem sollte in den Projekteinstellungen des Packages die Einstellung "Package-Unit zum Uses-Abschnitt hinzufügen" deaktiviert werden, da sonst alle (verwendeten) Units eingebunden werden.

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

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

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 9. Mai 2010, 18:44
Zitat von JamesTKirk:
Das geht auch nicht anders.
Das ist jedoch reichlich suboptimal, da Andorra 2D aus Dutzenden optionalen Komponenten besteht die teilweise auch nur für bestimmte Plattformen verfügbar sind. Ein globaler Suchpfad wie unter Delphi würde das Problem ganz einfach lösen. Dort werden (um wieder auf die Ausgangsfrage zurück zu kommen) die Quellcode-Dateien auch in ihren eigenen Ordner compiliert und damit hat sich die Sache. Schließlich werden zum Beispiel die nicht Komponenten des JEDI-Projektes auch einfach im Suchpfad registriert. Somit sind Projekte einfacher erstellbar und portabler, da nicht vor jedem compilieren der Projektsuchpfad entsprechend eingestellt werden muss. Ein entsprechendes Featurerequest von mir an das Lazarusteam wurde leider abgelehnt. Mittlerweile ist dieses Manko jedoch das, welches mich an Lazarus am meisten stört.
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
Benutzerbild von Glocke89
Glocke89

Registriert seit: 2. Mär 2007
Ort: Thüringen
80 Beiträge
 
Lazarus
 
#6

Re: [Lazarus + Andorra 2D]

  Alt 9. Mai 2010, 20:30
Zitat von JamesTKirk:
Meinst du wirklich Quelltextdateien (also *.pas) oder kompilierte Units (*.o, *.ppu)? Im ersten Fall ist das seltsam und im zweiten Fall "by design".
Okay - war unzureichend erklärt von mir. die .o und .ppu sind es.

Zitat von JamesTKirk:
Ich empfehle dir also so oder so immer ein Unitausgabeverzeichnis in den Compilereinstellungen anzugeben, da dies deinen Projektordner "sauber" hält. Den Ordner, den ich immer angebe ist obj\$TargetCPU()-$TargetOS() (unter Linux natürlich mit "/" statt "\"), was z. B. unter Win32 den Ordner obj\i386-win32 relativ zur Projektdatei (*.lpi) bezeichnet (Lazarus erstellt diesen Ordner übrigens automatisch). Allerdings wird hier dann auch die fertige Anwendung hinkompiliert. Um dies zu verhindern solltest du unter Projekt->Projekteinstellungen->Anwendung->Zieldateiname noch $NameOnly($ProjFile()) angeben, so wird die Anwendung nämlich in deinem Projektverzeichnis unter dem Namen deiner Projektdatei erzeugt.
Hat wunderbar funktioniert! Danke

/EDIT:
Hab aber noch nen anderes Problem:

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

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

type

  { TForm1 }

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

var
  Form1: TForm1;

  AdDraw: TAdDraw;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraOGLLaz.dll';
  //Application.OnIdle := @Idle;
  AdDraw.Initialize;
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;
end;

initialization
  {$I unit1.lrs}

end.
Wenn ich die Zeile  //Application.OnIdle := @Idle; nicht auskommentiere, kommt

Zitat:
Error
Project project1 raised exception class 'RunError(216)'.
dannach wird "AdFontFactory" im Editor angezeigt und Zeile 152 wird markiert:
  FLastKey := nil; Wenn ich es auskommentiert lasse, kommt keine Fehlermeldung aber es passiert auch nichts (was ja logisch ist )

Ich kann damit nichts anfangen. Jmd. da eine Idee ? =)
Christian
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

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

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 9. Mai 2010, 21:25
Zitat von igel457:
Zitat von JamesTKirk:
Das geht auch nicht anders.
Das ist jedoch reichlich suboptimal, da Andorra 2D aus Dutzenden optionalen Komponenten besteht die teilweise auch nur für bestimmte Plattformen verfügbar sind. Ein globaler Suchpfad wie unter Delphi würde das Problem ganz einfach lösen. Dort werden (um wieder auf die Ausgangsfrage zurück zu kommen) die Quellcode-Dateien auch in ihren eigenen Ordner compiliert und damit hat sich die Sache. Schließlich werden zum Beispiel die nicht Komponenten des JEDI-Projektes auch einfach im Suchpfad registriert. Somit sind Projekte einfacher erstellbar und portabler, da nicht vor jedem compilieren der Projektsuchpfad entsprechend eingestellt werden muss. Ein entsprechendes Featurerequest von mir an das Lazarusteam wurde leider abgelehnt. Mittlerweile ist dieses Manko jedoch das, welches mich an Lazarus am meisten stört.
Also die Sache mit den Plattformen müsstest du im Code machen, aber ansonsten hätte ich keine Probleme damit, wenn einmal des komplette Andorra2D Paket (für meine jeweils ausgewählte Plattform) durchkompiliert wird und sich die Sache dann erledigt hat... ich bin aktuell zeitlich leider etwas eng besetzt (die Uni möchte Hausaufgaben von mir, einen Proseminarvortrag, etc...), sonst würde ich mir den Code von Andorra2D mal näher anschauen und schauen, ob man das ordentlich mit Lazarus-Packages angehen könnte.

Zitat von Glocke89:
Wenn ich es auskommentiert lasse, kommt keine Fehlermeldung aber es passiert auch nichts (was ja logisch ist )

Ich kann damit nichts anfangen. Jmd. da eine Idee ? =)
Ganz dumme Idee: ändere mal das

Delphi-Quellcode:
Application.OnIdle := @Idle;
AdDraw.Initialize;
in

Delphi-Quellcode:
AdDraw.Initialize;
Application.OnIdle := @Idle;
Ansonsten hab ich keine Ahnung, denn bei mir läufts (allerdings verwende ich eine ApplicationProperties-Komponente, in der ich das OnIdle-Ereignis zugewiesen habe).

Oh halt... mir kommt noch eine Idee: liegt die AndorraOGLLaz.dll denn im selben Verzeichnis wie die Anwendung?

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

Registriert seit: 2. Mär 2007
Ort: Thüringen
80 Beiträge
 
Lazarus
 
#8

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 9. Mai 2010, 22:45
Zitat von JamesTKirk:
Ganz dumme Idee: ändere mal das

Delphi-Quellcode:
Application.OnIdle := @Idle;
AdDraw.Initialize;
in

Delphi-Quellcode:
AdDraw.Initialize;
Application.OnIdle := @Idle;
Hat nichts gebracht - wie bisher.

Zitat von JamesTKirk:
Ansonsten hab ich keine Ahnung, denn bei mir läufts (allerdings verwende ich eine ApplicationProperties-Komponente, in der ich das OnIdle-Ereignis zugewiesen habe).
Wie mache ich das genau?

Zitat von JamesTKirk:
Oh halt... mir kommt noch eine Idee: liegt die AndorraOGLLaz.dll denn im selben Verzeichnis wie die Anwendung?
Jopp!

LG Glocke
Christian
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

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

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 10. Mai 2010, 10:19
Zitat von Glocke89:
Zitat von JamesTKirk:
Ansonsten hab ich keine Ahnung, denn bei mir läufts (allerdings verwende ich eine ApplicationProperties-Komponente, in der ich das OnIdle-Ereignis zugewiesen habe).
Wie mache ich das genau?
Du ziehst eine TApplicationProperties-Komponente, die du in der Komponentenpalette unter Additional finden kannst auf's Formular. Dann klichst du im Object Inspector auf Ereignisse und klickst doppelt auf die Combobox beim OnIdle-Ereignis. Daraufhin sollte eine Methode in deinem Quelltext erscheinen, in die du einfach deinen OnIdle-Code reinsetzen kannst. Du kannst dann das manuelle Setzen von Application.OnIdle entfernen.

Zitat von Glocke89:
Zitat von JamesTKirk:
Oh halt... mir kommt noch eine Idee: liegt die AndorraOGLLaz.dll denn im selben Verzeichnis wie die Anwendung?
Jopp!
Du benutzt nicht zufällig Win64? Ansonsten bin ich mit meinem Latein ziemlich am Ende...

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

Registriert seit: 2. Mär 2007
Ort: Thüringen
80 Beiträge
 
Lazarus
 
#10

Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor

  Alt 10. Mai 2010, 10:39
Zitat von JamesTKirk:
Du ziehst eine TApplicationProperties-Komponente, die du in der Komponentenpalette unter Additional finden kannst auf's Formular. Dann klichst du im Object Inspector auf Ereignisse und klickst doppelt auf die Combobox beim OnIdle-Ereignis. Daraufhin sollte eine Methode in deinem Quelltext erscheinen, in die du einfach deinen OnIdle-Code reinsetzen kannst. Du kannst dann das manuelle Setzen von Application.OnIdle entfernen.
Probier ich nach Feierabend mal zuhause.
/EDIT: hat geklappt... also fast xD
Zitat:
Error
Project project1 raised exception class 'External SIGSEGV'.
und springt danach in die besagte Zeile xD

Zitat von JamesTKirk:
Du benutzt nicht zufällig Win64? Ansonsten bin ich mit meinem Latein ziemlich am Ende...
Nope. Linux: Ubuntu 9.10 i386
Christian
  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 23:07 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