nützliche Funktionen in alle Units einbinden uses

Hallo zusammen,

wie ist es möglich eigene Funktionen oder Prozeduren, die man geschrieben hat, in andere unabhängige Projekte einzubinden, ohne sie in den Quellcode zu kopieren.

Wäre es z.B. möglich eine Unit zu bauen (ihr einen Namen zu geben) und dann diese Unit einfach über den uses Teil des Quellcodes einzubinden (Das wäre sehr einfach zu handhaben, wenn ich erstmal weiss wie es geht.) ?

Ich benutze Lazarus IDE v0.9.28.2

Vielen Dank für Eure Hilfe.

Hi Pascal

Klar, kein Problem. Einfach eine neue pas-Datei anlegen, die muss dann ca. so aussehen:

unit namederunitdatei;

interface

{Hier deklarieren, damit die Funktionen auch extern genutzt werden kann}
function BeispielFunktion(a:integer):integer;

implementation

{Die effektive Funktionen…}
function BeispielFunktion(a:integer):integer;
begin
result:=a+300; {Nur ein einfaches Beispiel…}
end;

end.

Danach kannst Du die Unit ohne Probleme einbinden über die uses-Klausel. Wichtig ist das der Name in der Datei nach unit mit dem Dateinamen übereinstimmt, einfach ohne das .pas

Gruss
Sam

Vielen Dank!

Soweit hat das geklappt. Aber ich möchte ja nicht immer die pas-Datei in dem Ordner, wo ich das Projekt gespeichert habe, hineinkopieren.

Wie kann ich denn auf die pas-Datei, die ich einbinde, zugreifen, ohne dass diese im selben Verzeichnis wie meine unit1.pas usw. Dateien liegen?

Ich hoffe, dass ist auch kein Problem.

Pascal

Hi Pascal

ok! Ja, das ist auch kein Problem. Dazu legst Du einen eigenen Ordner mit den allgemeinen Units, wo Du diese Units reinkopierst. In Lazerus unter Projekt, Compilereinstellungen unter Andere Untis deinen Pfad zusätzlich hinzufügen, damit Lazerus deien Units findet. :smile:

Gruss
Sam

Funktioniert trotz Fehlermeldung
Danke, Danke!

So einfach ist das…
Man muss nur drauf kommen.
Jetzt hab ich es noch mal ausprobiert und es funktioniert einwandfrei.
Es kommt zwar die Fehlermeldung „Pfad für andere Units enthält ungewöhnliche Zeichen oder Leerzeichen“, obwohl keine Leerzeichen enthalten sind. Wenn ich dann auf OK klicke funktioniert es trotzdem.

Vielen Dank für die Hilfe!

Hi Pascal

Hmm… hast Du den Pfad über den […] Button hinter der Zeile hinzugefügt?

Gruss
Sam

den Pfad über den […] Button hinter der Zeile hinzugefügt?

Ja, habe ich. Danach habe ich auf „Durchsuchen“ geklickt: der typische SelectDirectoryDialog öffnete sich, so habe ich den Pfad ausgewählt.

War das falsch?

Was mich aber wirklich stört, ist dass ich den Pfad immer neu eingeben muss, wenn ich ein anderes Projekt öffne. Wenn ich dann meine Unit einbinden will, gibts einen Fehler: can’t find unit used by unit1.
Also gebe ich den Pfad in den Compilereinstellungen noch mal ein, und zwar direkt, ohne auf die … zu klicken und OK (keine Fehlermeldung, komisch). Jetzt funktionierts.

Aber wie kriege ich es hin, dass das eine Standart-Einstellung sein soll, grundsätzlich immer dieses Verzeichnis meiner Units zu benutzen und ich dann lediglich den Namen in die uses aufnehmen muss.

Vielen Dank