Einzelne Unit anlegen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
NoCee
Beiträge: 174
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Einzelne Unit anlegen

Beitrag von NoCee »

Hallo zusammen,

ich habe bisher Funktionen die in mehreren Programmen gebraucht werden
einfach immer ins neue Projekt reinkopiert.
Jetzt hab ich erstmals versucht, eine Unit anzulegen die das übernehmen soll.
Trotz intensiver suche krieg ich das nicht so hin wie ich mir das vorstelle.
Vermutlich sitzt da das Problem einfach vor dem PC.

Von meinem Verständnis her ist die Unit die ich anlegen will nennen wir sie mal myfunctions.pas
eine einzelne .pas Datei.
Wenn ich aber versuche eine neue Unit anzulegen lande ich immer bei einem Programm mit oder ohne Gui. Oder einer DLL oder sonst was,
halt mit 2 Units.
Brauche ich immer die .lpi dazu?
Wie lege ich eine Unit an und speichere sie ohne eine Form1 bzw. gleich ein Projekt mit zu erstellen?

Ich habs zwar zum Laufen gebracht, scheint mir aber nicht ganz der richtige Weg zu sein.
Dabei hab ich ein "Programm" und eine zweite Unit "myfunctionU2" angelegt. Im Programm ist nur der automaisch erstelle Rumpf drin.
In der Unit myfunctionU2 sind meine Funktionen eingebaut. Wenn ich die Unit verwenden will,
muß ich in einem anderen Programm dann aber myfunctionU2 in uses einbinden und nicht die Hauptdatei myfunction.

Wie gehts richtig bzw. besser?

Mit bestem Dank im Voraus und schöne Ostern
NoCee

Benutzeravatar
KoBraSoft
Beiträge: 123
Registriert: So 6. Jun 2021, 09:57
OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
CPU-Target: 64Bit 32 Bit
Kontaktdaten:

Re: Einzelne Unit anlegen

Beitrag von KoBraSoft »

NoCee hat geschrieben: Do 17. Apr 2025, 17:33 Von meinem Verständnis her ist die Unit die ich anlegen will nennen wir sie mal myfunctions.pas
eine einzelne .pas Datei.
Wenn ich aber versuche eine neue Unit anzulegen lande ich immer bei einem Programm mit oder ohne Gui. Oder einer DLL oder sonst was,
halt mit 2 Units.
Wie hast Du versucht eine neue Unit anzulegen? Ich vermute mit Projekt -> neues Projekt... ->
Versuche mal: Datei -> neu... -> Pascal unit
Brauche ich immer die .lpi dazu?
Nein
Wie lege ich eine Unit an und speichere sie ohne eine Form1 bzw. gleich ein Projekt mit zu erstellen?
siehe oben
Wie gehts richtig bzw. besser?
Wie es richtig geht weis ich leider auch nicht :)
Ich öffne die betreffende Unit im Editor und nehme die Unit in mein Projekt auf mit:Projekt -> Datei im Editor ins Projekt auf nehmen (Umschalt + F11)
Konrad

www.KoBraSoft.de

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Einzelne Unit anlegen

Beitrag von fliegermichl »

Wenn du eine Unit in mehreren Projekten verwenden willst, ist es am sinnvollsten, diese in einem Package unterzubringen. Dieses Package wird dann bei den betreffenden Projekten als Abhängigkeit eingetragen.

Siehe mein Beitrag hier

Mathias
Beiträge: 6910
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Einzelne Unit anlegen

Beitrag von Mathias »

Wenn du eine Unit in mehreren Projekten verwenden willst, ist es am sinnvollsten, diese in einem Package unterzubringen. Dieses Package wird dann bei den betreffenden Projekten als Abhängigkeit eingetragen.
Genau dies mache ich auch immer so. Dann muss man sich nicht um die Pfade kümmern, in der die Units liegen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

NoCee
Beiträge: 174
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Einzelne Unit anlegen

Beitrag von NoCee »

Genau dies mache ich auch immer so. Dann muss man sich nicht um die Pfade kümmern, in der die Units liegen.
Genau dies mache ich jetzt auch so :)
Hab da jetzt ne weile rumprobiert und habs mal grundsätzlich kapiert.
Zumindest funktionierts so wie ich das möchte.
Einzig was mir nicht wirklich klar ist, wenn ich schon das Package ins Projekt einbinde,
warum muß ich in Uses extra noch meine Unit eintragen wenn doch das Package wo die Unit zu finden ist bekannt ist.

Dann hätte ich noch eine Frage zu den Packages.
Wenn ich in meinem Projekt beim Kompilieren Debug Infos mit einkompiliere,
Macht Lazarus das dann für das Package auch so? Oder gilt das dann als "getestet" braucht man keine Debug-Infos.
Oder kann ich das etwa im Package separat steuern?

Vielen Dank für eure Unterstützung
Gruß
NoCee

Antworten