ChDir ~

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

ChDir ~

Beitrag von KOBOLD Messring GmbH »

In der Linux-Shell kann man super mit "cd ~" automatisch in das Home-Verzeichnis des jeweiligen Benutzers wechseln (und damit z.B. persönliche Programmeinstellungen laden, etc...).
Will ich das unter Lazarus/FP machen:
ChDir ('~');
kriege ich "Runtime Error 03".

Wenn das funktionieren würde, könnte man genial sowas machen:

Code: Alles auswählen

var Fini : TIniFile;
begin
   Fini := TIniFile.Create ('~/.konfigurations.datei);
   { usw. }
.... und hätte immer benutzerspezifische Einstellungen geladen/gespeichert.
Doch schon an der Tilde stirbt das Programm und der Punkt vorm Dateinamen mag es auch nicht. Aber die in C geschriebenen Linux-Programme leben von diesen Features. ¿Wie machen die das denn?
¿Wie kann ich denn diese Shell-Features mit FPC nutzen? (Muss nicht Plattform-unabhängig sein, muss nur unter Linux funktionieren).
Vielen Dank im vorraus für Eure Hilfe.

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Müsste so gehen

TIniFile.Create(GetEnvironmentVariable('HOME')+'/.konfigurations.datei');

Siehe auch:

WriteLn(GetAppConfigDir(True));
WriteLn(GetAppConfigDir(False));
WriteLn(GetAppConfigFile(True));
WriteLn(GetAppConfigFile(False));

Ausgabe:

/etc
/home/felipe/project1
/etc/project1.cfg
/home/felipe/.project1

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Eigentlich schade das die Funktionen das nicht von sich aus unterstützen. Aber naja, man könnte das ja nur einmal ermitteln am einfachsten natürlich beim erstellen des Froms. So währen alle Datei angaben auch Relativ.
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

"~" gilt nur in der BASH, welche zugegebener Maßen die Standardshell ist. Wenn aber jemand KSH, ZSH, ... benutzt, ist die Tilde wieder sinnlos.

theos Hinweis sollte funktionieren.

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Beitrag von KOBOLD Messring GmbH »

¡¡ SUPER !!
vielen Dank, theo,
mit GetEnvironmentVariable('HOME')+'/.konfigurations.datei'
funktionierts's perfekt

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich würd trotsdem empfehlen GetAppConfigDir zu nehmen das ist Plattformabhängiger
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Evlt. könnten wir ja für ~ Zusatz Funktionen schreiben. die unter Windows und Linux gehen.
So schwer währe das auch nicht. und es erhöht auch die Lesbarkeit. Finde ich.
Evlt. währen auch noch andere Zeichen sinnvoll außer ~
z.b. folgende:
~ Homverzeichnis des Users
$ Configuations Verzeichnis
| Verzeichnis der auszuführen Anwendung
fallen euch noch welche ein ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich seh da keinen Sinn drin.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Das war wieder klar. Es währe aufjedenfall vieles einfacher. und auch übersichtlicher. was ist wohl schöner/besser zu lesen:
ExtractFileDir(Application.ExeName) + '/test/hallo.txt'
oder
'|test/hallo.txt';

was währe kürzter ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Also besser nachvollziehbar und lesbar sicher das erste.
Wenn du unbedingt unleserlich und kryptisch und kurz programmieren willst lass die Finger von Pascal und geh zu C.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

wo ist das bitte schön kryptisch ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Kein mensch weiss was '|test/hallo.txt'; zu bedeuten hat. Da musst du immer erst ne Anleitung mitliefern. Für mich ist das kryptisch.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Natürlich weißt man das. Das habe ich da geschrieben. Das bedeutet das sich die Datei im Anwendung Verzeichnis befinden würde. Naja evlt. mache ich einfach sowas mal. so schwer ist das ja auch wieder nicht. Ich würde es schon eine Erleichterung finden. Wenn ich nicht immer die gleichen sachen schreiben muss, sondern nur noch ein Zeichen.

Ich wette auch die "Anderen" sind auch deiner Meinung, aber das ist für mich egal. Dann muss man halt nachschauen was jetzt die einzelnen zeichnen Bedeuten. Aber so viele gibt es ja auch wieder nicht. Das sind ja nur 3 bis jetzt. Die müsste sich jeder leicht merken können.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Sorry ich schreibe lieber 5 zeichen mehr anstatt mir 384 merken zu müssen.
Man kann sicher auch eine programmiersprache erfinden in der jeder befehl bnur ein zeichen lang ist.

http://de.wikipedia.org/wiki/Beatnik_%2 ... sprache%29
http://de.wikipedia.org/wiki/Befunge

man beachte die Beispielprogramme der 2. Sprache, sehr lesbar. Aber für Pluto sicher kein Problem.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

Naja wenn man den Namen von Home nicht unbedingt braucht kann man auch mit
fpsystem ('cd');
in das Homeverzeichnis des Users wechseln.
Mal davon abgesehn sind die Umgebungsvariablen manchmal mit
Vorsicht zu geniessen.

Antworten