Für einen Versuch, würde die in etwa so aussehen.
Code: Alles auswählen
procedure Register;
begin
ShowMessage('Die Sorcen der Package befinde sich in: ' + ?????);
...
Code: Alles auswählen
procedure Register;
begin
ShowMessage('Die Sorcen der Package befinde sich in: ' + ?????);
...
Nein, da dies ganz normaler Object Pascal Code ist, der so auch in der Anwendung landen könnte, und die IDE auch kein Compiler Define durchreicht, was dafür genutzt werden könnte.Mathias hat geschrieben: Do 7. Apr 2022, 13:47 Wen ich eine eigen Package programmiere, kann man in der abfragen, wo sich die Sourcen der Package befinden ?
Code: Alles auswählen
function TAvrEmbeddedApplicationDescriptor.DoInitDescriptor: TModalResult;
var
ThisPackage: TPackageLink;
PackPath: string;
begin
TAVRProject.Name:= 'avrproject';
TAVRProject.Path:= '';
TAVRProject.Device:= 'atmega32';
TAVRProject.InstructionSet:= 'avr5';
TAVRProject.ProgrammerCommand:= '';
TAVRProject.ProgrammerNeedsPort:= false;
////Package Path
ThisPackage:= PkgLinks.FindLinkWithPkgName(cPackageName);
PackPath:= ThisPackage.LPKFilename;
TAVRProject.PackagePath:= '';
if length(PackPath) > length(cPkgFileName)+3 then
if equal(PackPath,cPkgFileName,length(PackPath)-length(cPkgFileName)+1)
then TAVRProject.
PackagePath:= copy(PackPath,1,length(PackPath)-length(cPkgFileName));
////New project dialog
if not assigned(dlgAVRProjForm) then dlgAVRProjForm:= TdlgAVRProjForm.Create(nil);
dlgAVRProjForm.Init;
Result:= dlgAVRProjForm.ShowModal;
end;
Wenn ich das mit einem Suchprogramm im Lazarus Pfad suchen lassen, so bekomme ich einige Treffer. Ich vermute die Funktionen werden auch von OPM verwendet. Weil ich finde jede Menge Querverweise.Mathias hat geschrieben: Sa 9. Apr 2022, 08:55 Jetzt müsste man nur noch wissen, wie man an den Bezeichner "PkgLinks" kommt.
Code: Alles auswählen
var
ThisPackage: TPackageLink;
begin
ThisPackage:= PkgLinks.FindLinkWithPkgName('embedded_gui_package');
TabSheetTemplates.Caption:=ThisPackage.LPKFilename;
Bitte lies die offizielle Dokumentation, bevor du für sowas irreführende Informationen ergänzt. Die Include-Direktive unterstützt eben nicht den Bezeichner HOME direkt, sondern die Direktive fragt den Wert aus den Umgebungsvariablen ab, wenn es kein explizit unterstützter Bezeichner ist.Mathias hat geschrieben: Sa 9. Apr 2022, 13:38 Ich habe noch folgendes gefunden: https://www.freepascal.org/docs-html/prog/progsu41.html , da gibt es $I Befehle mit dem man verschiedene Infos zum Project holen kann.
Da kann ich mir vorstellen, das es auch etwas gibt, mit dem man den Package Name holen kann.
PS: Beim durchforschen bin ich auf "{$I %HOME%}" gestossen. Wen man danach googelt kommt kein einziger Treffer.
Das mit dem Home habe ich hier gefunden: https://github.com/r3code/lazarus-excep ... upport.pas
PS2: Habe für %HOME% da Wiki angepasst: https://wiki.freepascal.org/$include/de ... .24INCLUDE