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.) ?
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
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.
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.
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.