![]() |
Lazarus Unit einbinden, wie?
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:
Geht aber nicht. Ich kriege die Meldung:
var
Form1: TForm1; implementation {$R *.lfm} uses eigeneDatumsroutinen; end. Unit "eigeneDatumsroutinen" not used in Unit1 |
AW: Lazarus Unit einbinden, wie?
Zitat:
Zitat:
|
AW: Lazarus Unit einbinden, wie?
Zitat:
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; |
AW: Lazarus Unit einbinden, wie?
Zitat:
Alternativ gibt's da noch die Möglichkeit, den Pfad direkt in der uses-Klausel mit
Delphi-Quellcode:
anzugeben, aber das sollte man sich besser gar nicht erst angewöhnen ;)
in
|
AW: Lazarus Unit einbinden, wie?
Zitat:
Deshalb sehe ich eigentlich keinen Vorteil darin die Units nicht ins Projekt einzubinden und stattdessen die Suchpfade umständlich vollzupflastern. Welchen siehst du denn? |
AW: Lazarus Unit einbinden, wie?
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. |
AW: Lazarus Unit einbinden, wie?
Zitat:
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... Zitat:
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. |
AW: Lazarus Unit einbinden, wie?
Ich seh schon, hier scheiden sich wieder Delphisten und Make-Schubser mit vollkommen verschiedenen Grundauffassungen :lol:
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 :shock: 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:
Wie sähe das denn aus, gleich für die Uses-Klausel schon Betriebssysteme unterscheiden zu müssen?
{$ifdef WINDOWS}
uses unit1 in '...\unit1.pas'; {$elseif} uses unit1 in '.../unit1.pas'; {$endif} 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:
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! |
AW: Lazarus Unit einbinden, wie?
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. |
AW: Lazarus Unit einbinden, wie?
Genau, schreib es einfach wie im Linux.
Windows versteht das auch. (das ist nicht so verklemmt, wie Linux und Mac :stupid: ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz