AGB  ·  Datenschutz  ·  Impressum  







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

Lazarus Unit einbinden, wie?

Ein Thema von Codix32 · begonnen am 8. Apr 2012 · letzter Beitrag vom 9. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#1

Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 16:31
Hallo Leute,

ich versuche gerade in Lazarus eine Unit mit in Delphi erstellten eigenen Funktionen in die Hauptunit einzubinden.

Aber wie geht das? Eine option wie bei Delphi unter DATEI-> Unit einbinden gibt es nicht.
Habe ichs also so versucht:
Delphi-Quellcode:
var
  Form1: TForm1;


implementation

{$R *.lfm}

uses eigeneDatumsroutinen;


end.
Geht aber nicht. Ich kriege die Meldung:
Unit "eigeneDatumsroutinen" not used in Unit1
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 16:35
Aber wie geht das? Eine option wie bei Delphi unter DATEI-> Unit einbinden gibt es nicht.
Die Uses-Klausel findet man doch wohl auch ohne Menüpunkt

Zitat:
Unit "eigeneDatumsroutinen" not used in Unit1
Klingt eher nach einem Überflüssigkeits-Hinweis als nach einem Fehler
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#3

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 16:45
Aber wie geht das? Eine option wie bei Delphi unter DATEI-> Unit einbinden gibt es nicht.
Die Uses-Klausel findet man doch wohl auch ohne Menüpunkt

Zitat:
Unit "eigeneDatumsroutinen" not used in Unit1
Klingt eher nach einem Überflüssigkeits-Hinweis als nach einem Fehler
Ok, jetzt nachdem ich einen TButton drauf habe und eine simple Funktion aus der Unit
im Button aufrufe, funktioniert es.

Aber was, wenn die Unit in einem anderen Ordner liegen soll?

Muß ich denn den Pfad mit eingeben?

Das funzt jetzt:
Delphi-Quellcode:
var
  Form1: TForm1;


implementation

{$R *.lfm}

uses eigeneDatumsroutinen;


{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  button1.caption:=TagdesJahres; //<- Funktion liegt in 'eigeneDatumsroutinen.pas
end;
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 20:53
Aber was, wenn die Unit in einem anderen Ordner liegen soll?

Muß ich denn den Pfad mit eingeben?
Wie in Delphi auch: Du fügst den Pfad den Suchpfaden hinzu. In Lazarus gehst du auf Projekt->Compilereinstellungen, bzw. wenn du den Compiler direkt über die Kommandozeile aufrufst, hängst du den Parameter -FuX:\Dein\Pfad an.
Alternativ gibt's da noch die Möglichkeit, den Pfad direkt in der uses-Klausel mit in anzugeben, aber das sollte man sich besser gar nicht erst angewöhnen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 21:38
Alternativ gibt's da noch die Möglichkeit, den Pfad direkt in der uses-Klausel mit in anzugeben, aber das sollte man sich besser gar nicht erst angewöhnen
Warum? Die Kompilierzeit ist insbesondere bei größeren Projekten deutlich geringer (zumindest bei Delphi, aber das dürfte bei Lazarus kaum anders sein), zudem brauche ich so nur auschecken und kann direkt kompilieren ohne tausend Pfade einzutragen.

Deshalb sehe ich eigentlich keinen Vorteil darin die Units nicht ins Projekt einzubinden und stattdessen die Suchpfade umständlich vollzupflastern. Welchen siehst du denn?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#6

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 21:49
Wennn die Dateien ausschließlich zu diesem Projekt gehören, dann gehören sie auch in die Projektdatei. (mit IN, wie man hier so schön sagt)
Damit kann man auch über die Projektverwaltung und übers IDE-Insight (F6) schön einfach zu diesen Units springen.

Währe ja auch blöd. wenn die Suchpfade mit projektspezifischen Dingen vollgemüllt würden.

Außerdem kann man diese Projekte dann nicht mehr so einfach verschieben (anderes Verzeichnis oder Rechner), da sie an feste Pfade gebunden sind.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 22:34
Damit kann man auch über die Projektverwaltung
Ich bin bis eben davon ausgegangen, dass es sowas auch bei Lazarus gibt. Dort ist das jedoch nur eine Liste und nennt sich Projektinspektor.
In der Form macht es allerdings weniger Sinn viele Units direkt einzubinden, da verstehe ich den Einwand von implementation... Lazarus ist halt eher für kleine Hobby-Projekte ausgelegt wie man an solchen Sachen eindrucksvoll bewiesen bekommt...

Wennn die Dateien ausschließlich zu diesem Projekt gehören, dann gehören sie auch in die Projektdatei. (mit IN, wie man hier so schön sagt)
Ich habe auch Units, die nicht zum Projekt gehören (gemeinsam genutzte Units eben), aber im selben Repository liegen, direkt dem Projekt hinzugefügt.
Die Baumstruktur in der Projektverwaltung von Delphi erlaubt so eine sehr einfache Verwaltung der benutzten Units der verschiedenen Projekte der Projektgruppe. Für Lazarus gilt das wie schon geschrieben aber nicht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 8. Apr 2012 um 22:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Lazarus Unit einbinden, wie?

  Alt 8. Apr 2012, 23:57
Ich seh schon, hier scheiden sich wieder Delphisten und Make-Schubser mit vollkommen verschiedenen Grundauffassungen
Insofern ziehe ich das mit dem Gar-Nicht-Erst-Angewöhnen mal vorerst zurück.

Ich lege mal meine Programmierroutine dar, dann versteht ihr vllt. meinen Standpunkt.
Gewöhnlich benutze ich Kate als Codeeditor, weil er einen Vi-Mode besitzt, und daher sehr komfortabel zum Schreiben ist. Um den Buildvorgang zu starten drücke ich Shift+F9, das schubst dann "make clean && make build" an, denn natürlich habe ich für jedes Projekt eine Makefile, die den Vorgang automatisiert, d.h. alle Quelldateien durch den M4-Präprozessor pipet und dann an den Compiler weitergibt, der daraufhin Assemblercode ausspuckt, der dann von AS assembliert und von LD gelinkt wird, natürlich nicht, ohne eine Mapfile zu erstellen. Die Suchpfade werden dabei per -Fu an den Compiler übergeben.

Die Makefile sehe ich daher als genau den richtigen Ort für diese Pfadangaben. Will ich das Projekt mal woanders kompilieren, wo die Dependencies vielleicht woanders liegen, dann muss ich in dem Fall einfach nur die Makefile abwandeln, und nicht etwa in den Quellcode eingreifen Letzteres erscheint für mich unvorstellbar, schließlich sollte der Quellcode nicht davon abhängen, wo ich mich befinde. Allein schon der Verzeichnis-Trenner würde hier ein unglaubliches Hindernis darstellen.
Delphi-Quellcode:
{$ifdef WINDOWS}
uses unit1 in '...\unit1.pas';
{$elseif}
uses unit1 in '.../unit1.pas';
{$endif}
Wie sähe das denn aus, gleich für die Uses-Klausel schon Betriebssysteme unterscheiden zu müssen?
Der Buildprozess muss sowieso individuell auf die einzelnen Ziele angepasst werden, also kann ich die Unterscheidung lieber dort einbringen. Quellcode und Umgebung sind für mich genauso selbstverständlich zu trennen wie Staat und Kirche. Und Umgebung schließt nicht nur Betriebssystem und Prozessortyp, sondern auch die Verzeichnisstruktur mit ein.

Zitat von jaenicke:
Lazarus ist halt eher für kleine Hobby-Projekte ausgelegt wie man an solchen Sachen eindrucksvoll bewiesen bekommt...
Das Problem liegt woanders. Lazarus versucht, Entwicklergruppen mit vollkommen verschiedenen Gewohnheiten zusammenzubringen. Auf der einen Seite RAD-gewohnte Delphianer, die Lazarus entweder über Freiheit, Kosten oder Plattformunabhängigkeit lockt, und auf der anderen Compilerschubser wie mich, die von grundherein hohe Priorität auf Plattformunabhängigkeit legen, und dabei auch bedenken, dass wahrscheinlich noch andere als sie selbst, das Projekt kompilieren wollen, ohne am Quelltext fummeln zu müssen.

Oder in kurz: RADler vs. Fummler. Völlig verschiedene Gewohnheiten, die entsprechend unter einen Hut zu kriegen sind. Hobby vs. Professionell macht hier weniger den Unterschied.

Ich hoffe, ich konnte meinen Standpunkt und meine Gründe verständlich machen
Frohe Ostertage!

Geändert von implementation ( 9. Apr 2012 um 00:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Lazarus Unit einbinden, wie?

  Alt 9. Apr 2012, 00:06
Es geht dabei ja nur um die uses-Klausel der Projektdatei. In den Units kann man zumindest bei Delphi ohnehin keine Pfade angeben (aus eben den von dir genannten Gründen).

Wenn man absolute Pfade braucht, müsste man das aber in der Tat nach Betriebssystem unterscheiden. In der Regel sind das aber relative Angaben (hoffe ich mal ), so dass man immer den Slash nehmen könnte, der unter Windows wie auch unter unixoiden Betriebssystemen als Pfadtrennzeichen gültig ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#10

AW: Lazarus Unit einbinden, wie?

  Alt 9. Apr 2012, 00:14
Genau, schreib es einfach wie im Linux.
Windows versteht das auch. (das ist nicht so verklemmt, wie Linux und Mac )
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 20:01 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