TApplication erweitern?
-
- Beiträge: 40
- Registriert: Mo 4. Aug 2008, 09:25
- OS, Lazarus, FPC: WinXP(L 0.9.29SVN FPC 2.4.1)
- CPU-Target: xxBit
- Wohnort: CH
TApplication erweitern?
Hallo,
ich habe TApplication erweitert.
property Application.UserDir (nix anderes als aufruf von GetUserDir)
property Application.ConfigDir (nix anderes als aufruf von GetAppConfigDir)
dazu musste ich die Datei E:\lazarus\fpc\2.4.1\source\packages\fcl-base\src\custapp.pp erweitern.
Nun wie weiter ? Muss ich nun fpc neu kompilieren ? Falls ja wie ?
Danke.
ich habe TApplication erweitert.
property Application.UserDir (nix anderes als aufruf von GetUserDir)
property Application.ConfigDir (nix anderes als aufruf von GetAppConfigDir)
dazu musste ich die Datei E:\lazarus\fpc\2.4.1\source\packages\fcl-base\src\custapp.pp erweitern.
Nun wie weiter ? Muss ich nun fpc neu kompilieren ? Falls ja wie ?
Danke.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: TApplication erweitern?
Zieh dir am besten vom SVN den Lazarus-Source, bau den Change ein und generiere einen Patch.
Das ganze bietest du dann im irc #lazarus oder so als Patch an und in der nächsten Lazarus-Version ists drin.
Für dich lokal dann auch jetzt schon.
Denk aber dran, dass es plattformunabhängig sein muss, wenn es ins offizielle Lazarus-Repos rein soll
Das ganze bietest du dann im irc #lazarus oder so als Patch an und in der nächsten Lazarus-Version ists drin.
Für dich lokal dann auch jetzt schon.
Denk aber dran, dass es plattformunabhängig sein muss, wenn es ins offizielle Lazarus-Repos rein soll
Re: TApplication erweitern?
Nein, du musst nur die LCL neu kompilieren.LazarusRocks hat geschrieben: Nun wie weiter ? Muss ich nun fpc neu kompilieren ? Falls ja wie ?
http://wiki.lazarus.freepascal.org/IDE_ ... Lazarus/de" onclick="window.open(this.href);return false;
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TApplication erweitern?
Falsch. Die Datei custapp.pp gehört wie, der Dateipfad schon sagt zu den Compiler Packages. Lazarus kann nur sich selbst und alles zur IDE gehört bauen. FPC, RTL und die Compiler Packages gehören nicht dazu. Daher gehe ich davon aus, dass die Klasse TCustomApplication verändert wurde (wenn nicht kann man alles ab hier ignorieren).theo hat geschrieben:Nein, du musst nur die LCL neu kompilieren.
http://wiki.lazarus.freepascal.org/IDE_ ... Lazarus/de" onclick="window.open(this.href);return false;
Du musst eigentlich nur diese eine Datei neu kompilieren und dann die alten Binärdateien ersetzen:LazarusRocks hat geschrieben: Nun wie weiter ? Muss ich nun fpc neu kompilieren ? Falls ja wie ?
Code: Alles auswählen
cd E:\lazarus\fpc\2.4.1\source\packages\fcl-base\src\
fpc custapp.pp
mv custapp.o E:\lazarus\fpc\2.4.1\lib\units\i386-win32\fcl-base\
mv custapp.ppu E:\lazarus\fpc\2.4.1\lib\units\i386-win32\fcl-base\
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: TApplication erweitern?
Naja, sagen wir halb falsch.Socke hat geschrieben:Falsch.theo hat geschrieben:Nein, du musst nur die LCL neu kompilieren.
http://wiki.lazarus.freepascal.org/IDE_ ... Lazarus/de" onclick="window.open(this.href);return false;

Mit custapp.pp hast du natürlich recht.
Andererseits sagt er ja, er habe TApplication erweitert (unit Forms der LCL).
Wahrsch. hat er aber TCustomApplication (in custapp.pp) erweitert. Ob das sinnvoll ist, weiss ich nicht.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TApplication erweitern?
Die angesprochenen Funktionen sind in der RTL enthalten. Daher wären sie in TCustomApplication besser aufgehoben, wenn auch nicht unbedingt notwendig.theo hat geschrieben:Naja, sagen wir halb falsch.
Mit custapp.pp hast du natürlich recht.
Andererseits sagt er ja, er habe TApplication erweitert (unit Forms der LCL).
Wahrsch. hat er aber TCustomApplication (in custapp.pp) erweitert. Ob das sinnvoll ist, weiss ich nicht.
Wenn ich TApplication für meine Zwecke erweitern will, gehe ich eh einen anderen weg

MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 40
- Registriert: Mo 4. Aug 2008, 09:25
- OS, Lazarus, FPC: WinXP(L 0.9.29SVN FPC 2.4.1)
- CPU-Target: xxBit
- Wohnort: CH
Re: TApplication erweitern?
Ja, ich habe custapp.pp erweitert.
Anschliessend ein kleines Test-Progrämmchen gemacht und das hat dann nicht compiliert.
Darauch hab ich dann Lazarus neu compiliert (mit Clean All usw) aber das hat auch nix gebracht.
Lustigerweise wurden die neuen Eigenschaften in der Code-Completition angezeigt.
Also muss ich offenbar FCL frisch compilieren.
Hab mir dann mit SVN den Freepascal Trunk geholt und gehofft dass da ein batch-datei sei um den ganzen Kram neu zu bilden.
Leider hab ich das dann aber nicht hingekriegt und deshalb hier im Forum meine Frage gepostet.
Danke.
Anschliessend ein kleines Test-Progrämmchen gemacht und das hat dann nicht compiliert.
Darauch hab ich dann Lazarus neu compiliert (mit Clean All usw) aber das hat auch nix gebracht.
Lustigerweise wurden die neuen Eigenschaften in der Code-Completition angezeigt.
Also muss ich offenbar FCL frisch compilieren.
Hab mir dann mit SVN den Freepascal Trunk geholt und gehofft dass da ein batch-datei sei um den ganzen Kram neu zu bilden.
Leider hab ich das dann aber nicht hingekriegt und deshalb hier im Forum meine Frage gepostet.
Danke.
- af0815
- Lazarusforum e. V.
- Beiträge: 6835
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: TApplication erweitern?
Es wird über 'make' dateien gemacht - Keine 'Batch-datei' damit geht das sowhl auf Win als auch auf Linux,... . Damit kann sowohl der FPC als auch Lazarus aus dem trunk erstellt werden.LazarusRocks hat geschrieben: Hab mir dann mit SVN den Freepascal Trunk geholt und gehofft dass da ein batch-datei sei um den ganzen Kram neu zu bilden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: TApplication erweitern?
Vielleicht hilft auch ein einfaches "FPC Quellenverzeichnis neu einlesen"?
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: TApplication erweitern?
Das ist für die Code-Completion, nicht für den Compiler. Er kommt nicht darum herum, mindestens die FCL neu zu bauen (und damit anschließend auch nochmal die LCL).carli hat geschrieben:Vielleicht hilft auch ein einfaches "FPC Quellenverzeichnis neu einlesen"?
Re: TApplication erweitern?
Darf ich mal fragen, was der Sinn dieser Übung ist?
Ich meine das bringt ja nun echt nicht besonders viel, oder?
Ob es als Patch durchkommt, wage ich zu bezweifeln. Oder hat Delphi das neuerdings?
Ist schon OK, ich wollte nur mal fragen.
Ich meine das bringt ja nun echt nicht besonders viel, oder?
Ob es als Patch durchkommt, wage ich zu bezweifeln. Oder hat Delphi das neuerdings?
Ist schon OK, ich wollte nur mal fragen.

-
- Beiträge: 40
- Registriert: Mo 4. Aug 2008, 09:25
- OS, Lazarus, FPC: WinXP(L 0.9.29SVN FPC 2.4.1)
- CPU-Target: xxBit
- Wohnort: CH
Re: TApplication erweitern?
Ja TApplication wird halt seit Jahren vernachlässigt und wäre aber so eine schöne Sache.
So muss ich z.B. oft in meine Projekt Code reinkopieren um z.B. UniqueInstance zu erhalten.
Wäre doch schön wenn man Application.UniqueInstance:=true; schreiben könnte und die Sache wäre erledigt
Oder wie ein anderer Thread hier im Forum zeigt wäre z.B. Application.Version ganz nett.
Und damit halt die Config-Dateien am richtigen Ort landen:
Application.UserDir // user path
Application.ConfigDir // all users
Application.Path // "startIn" path der Anwendung
So muss ich z.B. oft in meine Projekt Code reinkopieren um z.B. UniqueInstance zu erhalten.
Wäre doch schön wenn man Application.UniqueInstance:=true; schreiben könnte und die Sache wäre erledigt
Oder wie ein anderer Thread hier im Forum zeigt wäre z.B. Application.Version ganz nett.
Und damit halt die Config-Dateien am richtigen Ort landen:
Application.UserDir // user path
Application.ConfigDir // all users
Application.Path // "startIn" path der Anwendung
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TApplication erweitern?
Dann dürfte seit Jahren alles da sein, um Programme zum Laufen zu bringen. Am Hilfesystem wird zwar noch gearbeitet, aber es ist in Arbeit.LazarusRocks hat geschrieben:Ja TApplication wird halt seit Jahren vernachlässigt
Wenn du meinst, dass TApplication unterstützen sollte, dass immer nur eine Instanz deiner Anwendung gestartet werden darf, und du deshalb immer diesen Code kopieren musst, versuche dich einmal mit einem Package. Ob ich dann Application.UniqueInstance := True oder AllowMultipleInstances(False) (als funktionale Variante) verwende ist für mich eher Nebensache.LazarusRocks hat geschrieben:So muss ich z.B. oft in meine Projekt Code reinkopieren um z.B. UniqueInstance zu erhalten.
Wäre doch schön wenn man Application.UniqueInstance:=true; schreiben könnte und die Sache wäre erledigt
Was soll diese Eigenschaft/Funktion zurückliefern? Eine Versionsnummer ist in der Regel nicht Bestandteil einer Anwendung sondern eine Eigenschaft. Damit wäre es in einer Eigenen Unit (siehe LCL/Lazarus) eventuell besser aufgehoben. Wenn allerdings die Versionsinformationen aus dem Ressourcen-Abschnitt der Binärdatei extrahiert werden soll, stimme ich für eine entsprechende Funktion in der FCL (nicht in der LCL oder RTL). Den angesprochenen Thread kenne ich nicht (kannst du den evtl. verlinken?)LazarusRocks hat geschrieben:Oder wie ein anderer Thread hier im Forum zeigt wäre z.B. Application.Version ganz nett.
Wenn ich TApplication erweitern möchte, mache ich das üblicherweise auf Projektbasis. Es spricht aber nichts dagegen, eine entsprechende Klasse in einem Package für alle Projekte bereit zu halten:
Code: Alles auswählen
uses Forms;
initialization
Application.Free;
Application := TMyApplication.Create(nil);
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein