Wie auf Umgebungsvariablen zugreifen?
-
- Beiträge: 8
- Registriert: Fr 4. Apr 2008, 22:33
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Wie auf Umgebungsvariablen zugreifen?
Da mir hier schon mal so super und schnell geantwortet wurde, komme ich noch mal mit einem ungelösten Problem, das auch nach dem obligatorischen Googlen ungelöst blieb:
Wie lese ich die Umgebungsvariablen von Lazarus aus? Ich brauche nämlich konkret den zum Kompilierzeitpunkt benutzten Pfad zum Lazarusordner. Ich stelle mir vor, dass das irgendwie mit ner Compilerdirektive gehen müsste, hab aber keine ahnung, wie.
Vielen Dank im Voraus!
Reneng
Wie lese ich die Umgebungsvariablen von Lazarus aus? Ich brauche nämlich konkret den zum Kompilierzeitpunkt benutzten Pfad zum Lazarusordner. Ich stelle mir vor, dass das irgendwie mit ner Compilerdirektive gehen müsste, hab aber keine ahnung, wie.
Vielen Dank im Voraus!
Reneng
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Wie auf Umgebungsvariablen zugreifen?
Hallo Reveng,Reveng hat geschrieben:Wie lese ich die Umgebungsvariablen von Lazarus aus? Ich brauche nämlich konkret den zum Kompilierzeitpunkt benutzten Pfad zum Lazarusordner.
wenn es hierfür keine Umgebungsvariablen gibt, könntest du das Problem etwas umständlicher dadurch lösen, dass du die entsprechenden Konfigurationsdateien ausließt. In diesen stehen nämlich die Pfade drin.
Gruß, Euklid
-
- Beiträge: 8
- Registriert: Fr 4. Apr 2008, 22:33
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Das Problem ist verwandt mit meinem Übersetzungsproblem aus dem anderen Thread.
Die Lösung bestand darin, folgendes auszuführen:
Aber dieser Pfad ist ja nicht bei jedem, der das Programm kompilieren können soll, gleich. Insbesondere, weil ich das Programm auch für Linux bereitstellen will.
Wie komme ich also an diesen Pfad heran?
Die Lösung bestand darin, folgendes auszuführen:
Code: Alles auswählen
TranslateUnitResourceStrings('LCLStrConsts', 'C:\lazarus\lcl\languages\lclstrconsts.de.po');
Wie komme ich also an diesen Pfad heran?
-
- Beiträge: 8
- Registriert: Fr 4. Apr 2008, 22:33
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Moment, ich will ja nur das eine oder das andere.
Ich habe aber gerade festgestellt, dass das mit dem Umbenennen auch nicht so richtig klappen will. (Wohlwissend, dass das eh nicht der goldene Weg ist...)
Ich habe die lclstrconsts.de.po in lclstrconsts.po umbenannt. Dennoch hat das Programm dann die englischen Texte drin. Woran liegt das?
Ich habe aber gerade festgestellt, dass das mit dem Umbenennen auch nicht so richtig klappen will. (Wohlwissend, dass das eh nicht der goldene Weg ist...)
Ich habe die lclstrconsts.de.po in lclstrconsts.po umbenannt. Dennoch hat das Programm dann die englischen Texte drin. Woran liegt das?
-
- Beiträge: 65
- Registriert: Sa 27. Okt 2007, 13:27
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Seebergen
Weil im Lazarusinstallationsverzeichnis\lcl\ die Dateien lclstrconsts.rst, lclstrconsts.ppu, lclstrconsts.pas, lclstrconsts.o die LCLStrings enthalten. Und im Lazarusinstallationsverzeichnis\lcl\Units\i386-win32\ die Dateien lclstrconsts.rst, lclstrconsts.ppu, lclstrconsts.pas, lclstrconsts.o (in der Windowsversion) benutzt werden. Also müssten diese Dateien eingedeutscht werden wenn alles Deutsch sein soll, insbesondere die lclstrconsts.pas.
Ich denke mal das das der Weg ist. Der andere Weg ist nur gedacht um zur Lafzeit beliebige Sprachversionen bereitzustellen.
Tschüsss!
Ich denke mal das das der Weg ist. Der andere Weg ist nur gedacht um zur Lafzeit beliebige Sprachversionen bereitzustellen.
Tschüsss!
-
- Beiträge: 8
- Registriert: Fr 4. Apr 2008, 22:33
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Hhm, na gut. Wenn ich einmalig oder zentral das Programm kompilieren und bereitstellen will, kann ich durch Ersetzung/Übersetzung der Units das Programm fest übersetzen.
Wenn ich aber das Programm samt Quelltext für die weitere Benutzung weitergeben möchte, geht das ja nicht, weil andere Leute die originären LCL-Quelltexte haben.
Daher würde ich es vorziehen, die Funktion TranslateUnitResourceStrings zu benutzen. Ein Übel dabei ist aber, dass dieses auf eine Datei zugreifen muss, dessen Ort je nach Lazarusinstallation variiert.
Ist es möglich, die Sprachdatei ...de.po als Resource in das Programm zu übernehmen?
Wenn ich aber das Programm samt Quelltext für die weitere Benutzung weitergeben möchte, geht das ja nicht, weil andere Leute die originären LCL-Quelltexte haben.
Daher würde ich es vorziehen, die Funktion TranslateUnitResourceStrings zu benutzen. Ein Übel dabei ist aber, dass dieses auf eine Datei zugreifen muss, dessen Ort je nach Lazarusinstallation variiert.
Ist es möglich, die Sprachdatei ...de.po als Resource in das Programm zu übernehmen?
-
- Beiträge: 65
- Registriert: Sa 27. Okt 2007, 13:27
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Seebergen
Ja zur Quelltextweitergabe ist das halt weniger geeignet.
Aber die ...de.po Datei kann ja auch im Quelltextverzeichnis mitgegeben und von da aus auch mit TranslateUnitResourceStrings geladen werden. Später bei einer Installation (Ich gehe halt immer von Windows aus) liegt sie dann eben im Installationsverzeichnis.
Oder die ...de.po Datei kann in die Exedatei (wieder Windows) eingebunden und beim Start im Startverzeichnis gespeichert und benutzt werden und beim Programmende wird sie gelöscht (z.B. entsprechende Rechte vorausgesetzt).
Als Resource währe das ähnlich, denn die Datei muss ja lesbar in einem Verzeichnis liegen. (Denk ich mal)
Aber ob es möglich ist die englischen lclstrconsts.pas/lclstrconsts.rst Dateien per Compilerschalter durch die deutschen Dateien zu ersetzen entzieht sich meiner Kenntnis.
Aber die ...de.po Datei kann ja auch im Quelltextverzeichnis mitgegeben und von da aus auch mit TranslateUnitResourceStrings geladen werden. Später bei einer Installation (Ich gehe halt immer von Windows aus) liegt sie dann eben im Installationsverzeichnis.
Oder die ...de.po Datei kann in die Exedatei (wieder Windows) eingebunden und beim Start im Startverzeichnis gespeichert und benutzt werden und beim Programmende wird sie gelöscht (z.B. entsprechende Rechte vorausgesetzt).
Als Resource währe das ähnlich, denn die Datei muss ja lesbar in einem Verzeichnis liegen. (Denk ich mal)
Aber ob es möglich ist die englischen lclstrconsts.pas/lclstrconsts.rst Dateien per Compilerschalter durch die deutschen Dateien zu ersetzen entzieht sich meiner Kenntnis.