![]() |
Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzeichni
Es gibt auf meiner Homepage wieder einen neuen Artikel: %HOMEDIR% - das unbekannte Verzeichnis. Da er ein programmierspezifisches Thema behandelt, stelle ich ihn mal hier vor. In dem Artikel geht es um die Unsitte, dass Programmierer leider immer noch ihre Konfiguratiosndaten im Programmverzeichnis abelegen. In der letzten Zeit ist mir das immer wieder bei Programmen aufgefallen, die hier oder in anderen Foren vorgstellt werden. Da ich es leid war immer wieder das gleiche zu schreiben, hab eich mir erlaubt einen Artikel zuschreiben und es dort noch etwas weiter auszuführen.
Link zum Artikel: ![]() Über Kritik und Anregungen würde ich mich freuen. |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Programmieren allgemein" nach "Tutorials und Kurse" verschoben.
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hallo,
es gibt unter Windows die Umgebungsvariable "%HOMEPATH%". Wenn man die vor seinen Dateinamen setzt ist man auch im "Home"-Verzeichnis. Man muss also nicht erst den Ordner über die API holen, sondern kann gleich
Delphi-Quellcode:
schreiben.
SaveToFile("%HomePath%\MeineEinstellungen.ini");
Gruß xaromz |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Bitte erste testen bevor solche Aussagen gemacht werden. Delphi löst Umgebungsvariablen nämlich nicht automatisch auf:
Delphi-Quellcode:
Und auf Umgebungsvariablen sollte man sich nicht unbedingt verlassen, da sie nicht zwingend gesetzt sein müssen.
procedure TForm1.Button1Click(Sender: TObject);
var s: String; begin OpenDialog1.InitialDir := '%HOMEPATH%'; OpenDialog1.Execute; s := '%HOMEPATH%\Blub'; ShowMessage(s); end; Desweiteren bekomme ich damit nur den Pfad nach: C:\Dokumente und Einstellungen\<Benutzername>, Aber wie bekomme ich jetzt den Ordner Anwendungsdaten? Hardcvoden wird nicht gehen, da er unter dem englischen Windows wohl nicht so heißen wird. |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Ein guter Artikel nur
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Dieses Unterverzeichnis sollte dabei nach dem Programm benannt sein, dessen Konfigurationsdaten man dort ablegen will. In diesem Ordner kann man sich sicher sein, dass dort der Benutzer auch Schreibrechte hat und dass sich die Benutzer ihre Dateien nicht gegenseitig überschreiben, da dieser Ordner benutzerspezifisch ist und andere auf ihn nicht zugreifen können. |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Erstmal die Tipp- und Grammatikfehler: ;)
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ansonsten (habe das zwar gewusst) sehr hilfreich. :thumb: |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Besten Dank Matze und GuenterS, habe es ausgebessert. :thumb: |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hallo,
Zitat:
Die Umgebungsvariable ist aber bei modernen Windows-Versionen (min. seit Win 2000) immer gesetzt. Verlassen kann man sich also schon drauf. Zitat:
Gruß xaromz |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Entweder muss es heißen
Zitat:
Zitat:
/Developer/Artikel/HOMEDIR.shtml is kein Ordner oder gibst du deinen Ordnern namen mit .shtml |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Das war ein Kompromiss, da ich nicht schreiben wolle Ordner/Datei. Das gehört aber definitiv nicht hier her.
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hai ihr,
unabhängig davon wie man das Applikationdata-Directory des Users ermittelt: Wichtig ist es den Entwicklern zu zeigen warum es dieses Verzeichniss gibt und warum man es auch verwenden sollte. P.S.: @Luckie: Warum stellst Du den Inhalt des Tuts nicht auch hier in den Thread? |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hallo
Zitat:
Zitat:
Aber natürlich ist die Version mit dem API-Aufruf die sichere. Ich dachte eben, Windows verhält sich auch mal konsistent :? . Gruß xaromz |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Moin moin,
Zitat:
Viele Grüße // Martin |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Nun, Martin redet von Programmen, die sich ausschließlich in ihrem eigenen Ordner abspielen und da muss ich auch sagen, dass dies absolut praktisch ist. Es gibt nur ein Verzeichnis, welches es bei Bedarf zu packen/löschen/verschieben/kopieren gilt.
Beide Positionen haben etwas für sich - aus pragmatischer Sicht sehe ich dies ebenso wie Martin. |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hallo,
Also ich finde es sehr nützlich wenn kleine Tools ihre Konfigurationen im Programmverzeichnis ablegen, so kann man sich ohne das man das Programm installieren muss das Programm einfach auf den USB-Stick zum Beispiel ziehen, mithnehmen und überall starten ohne das man etwas einstellen muss! Für mich ist sowas ein Standardkriterium um überhaupt in meinen Tools Ordner auf dem Stick zu kommen. Sicherlich werden größere, client-server basierte Multi-User Anwendungen mit dem Prinzip nicht weit kommen aber da gibt es verschiedene Wege die man gehen kann (Konfiguration in DB, in Datei mit Benutzerkürzel oder meinetwegen ins HomeDir). Wie gesagt, bei kleineren Tools finde ich es klasse wenn diese Ihre Konfigurationen im selben Ordner wie die Echse ablegen. Gruß, Michael <Edit> Da war der Chef schneller als ich ;) Naja, über Sinn un Zweck solcher Dinge lässt sich streiten, trotzdem gut das man weiss wie man das HomeDir oder das Appdir ermitteln kann! </Edit> |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
@mika: das wäre wieder ein Spezialfall. Aber gerade diese Programm für USB Sticks sind auch als solche konzipiert und nicht für die Installation auf einem System wo meherer Benutzer das Programm benutzen sollen. |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Was das für Programme sind? Völlig unterschiedliche. Sei es mein bevorzugtes Tool zur Dateiverwaltung (TotalCommander), ein Online-Rollenspiel (Dark Age of Camelot) oder ein PHP-Editor. All diese Programme kann ich alleine durch Filecopy 'installieren' und habe nicht ein einziges Problem damit. ;-)
Ohne Zweifel gibt es Programme und Konstellationen, bei denen man ohne Home-Dir in massive Probleme läuft. Aber das ist nur ein Beleg dafür, dass weder die eine noch die andere Position absolutistisch vertreten werden sollte. So oder so ist aber das Wissen über dieses Verzeichnis und dessen korrekte Benutzung durchaus wichtig. |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Erstellen denn diese Programme auch Dateien in ihrem Ordner?
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Ja. Jedes dieser Programme erstellt und ändert Dateien, wenn ich mich entschließe, entsprechende Aktionen durchzuführen. Und gerade bei dem Spiel bin ich heilfroh, dss ich die 4 CDs nicht stets neu installieren muss, wen ich einen der "Daddel-PCs" mal wieder plätte.
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Das Thema ist wohl genauso wie die Diskussion um globale Variablen nicht so einfach abzuhaken, es gibt keine Loesung, die in jedem Fall gut ist.
Natuerlich ist es fuer den Programmierer (und oft auch fuer den Anwender) geschickt, wenn die Programme ihre Konfiguration in ihrem Ordner ablegen - ich weiss immer genau wo alles ist und muss mir die Config-Daten nicht immer muehsam zusammensuchen. Dagegen ist auch nichts zu sagen - solange sich der Programmierer sicher sein kann, dass ein Programm in seinem Ordner auch wirklich Schreibrechte hat. Dies ist aber v.a. auf Firmenrechnern nicht der Fall. Weiters gibt es auch das Problem, wenn mehrere User mit dem Programm arbeiten und es sich auf sich abstimmen, dann knallt es zwangslaeufig. Ich hatte mal das Vergnuegen, auf einem Novell-System zu arbeiten, auf welches mit WinFrame zugegriffen wurde. Die Anwendungen lagen dabei auf Servern (8 an der Zahl), die Anwender arbeiteten immer Remote. In so einem Fall muss das Programm fuer jeden User eigene Daten verwalten, da es sonst bei den 600 Usern die auf den Servern arbeiteten einfach nur knallen wuerde. Allerdings hatte das System auch noch die Moeglichkeit, alle Datei-Operationen auf den User-Ordner zu verlegen - ob das Programm will oder nicht. Dass dieses System aber auch fehleranfaellig ist, duerfte klar sein. Nur um mal eine zusaetzliche Idee einzuwerfen: man deklariere sich eine Variable BasePath und initialisiere sie auf den Ordner, in dem das Programm liegt. Nun ueberpruefe ich die Schreibrechte in dem Ordner. Habe ich sie, lege ich die Config-Dateien in dem Ordner ab, wenn nicht dann landen sie eben im entsprechenden Ordner des Userprofils. Dies gibt aber wieder Probleme: was ist wenn ich Schreibrechte habe, diese aber im Laufe der Zeit entzogen werden? Was geschieht dann? Wie gesagt, das Thema ist alles andere als trivial, aber generell sollte man seine Daten wirklich im User-Ordner ablegen. In dem Fall sollte man aber auch dafuer sorgen, dass die Dateien wieder entfernt werden koennen (auf Wunsch natuerlich), da im User-Ordner sonst das Chaos herrscht, ich merke es selbst, der Ordner muss regelmaessig gesaeubert werden. Greetz alcaeus |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Off-Topic:
Total Commander.... Ebenso mein lieblingsprogramm zur Dateiverwaltung nachdem ich von Dos-navigator genug hatte.... On-Topic: Der HxD Hexeditor zum Beispiel ein klasse Programm das noch besser ist weil es seine Daten im Programmverzeichnis ablegt... weitere Programme dieser Art: - Total Commander - RegWorkshop - Dos Navigator - CPU Killer und so weiter und so fort Allerdings bin ich bei Mail-Clients zum Beispiel generell der Meinung das diese Ihre Daten ins App-Verzeichnis oder Homedir legen sollten (aber mit ner guten Backup Funktion) Wie gesag, je nach Anwendungsfall anders, aber ich mag halt die Programme am liebsten die wie damals unter DOS sich durch kopieren installieren liessen und jetzt wo Internet auch fast Standard ist am besten ne Online-Update-Funktion haben. Trotzdem wissenswert wie sich die Verzeichnisse ermitteln lassen :) mfg, Mika |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Und wenn man es ganz lieb mit dem User meint, baut man eben noch eine Exportfunktion ein, die einem die gewünschten Dateien im gewünschten Ordner für den späteren Gebrauch zwischenspeichert. Oder, bei Programmstart und/oder in den Optionen läßt sich einstellen, wo gespeichert wird. Oder (wie alcaeus ja auch schon vorgeschlagen hat) das Programm checkt, ob Schreibrechte im Programmordner bestehen. Sollten die zwischenzeitlich entfernt worden sein, machts ja auch nichts, gelesen werden können die Daten ja noch, und gespeichert wird dann eben an anderer Stelle. Ich finde Luckies Artikel durchaus interessant und sinnvoll :thumb: |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Moin, moin,
also ich sehe schon dass sich Michael da viel Mühe mit seinem Artikel gegeben hat und das hat auch meine Anerkennung. Habe das jetzt andiskutiert da ich wirklich froh bin wenn man einfach mal was verschieben kann und nicht schon wieder Ärger mit der Registry hat wenn mal zwei verschiedene Varianten von einem Programm auf dem Rechner sind. Ja und wie man sieht, geht das anderen DP´lern auch schon mal so (danke der Rückendeckung!). Würde das mal so strukturieren (Alcaeus hat schon gezeigt, dass es nicht so trivial ist). Wenn Programm sich ins System einklinken muß, als Explerererweiterung, als Officetool, oder als Systemutility, dann halte ich die Einbindung für Sinnvoll. Auch wenn Programm miteinander integriert werden müssen, aber auch einzeln verkauft werden, dannn kommt man um Luckies zusammengestellte Richtlinen wohl nicht ganz umhin. Wenn es aber um weitgehend eigenständige Programme oder Programmsysteme geht, dann bin ich über diese Systemintegration nicht unbedingt glücklich. Viele Grüße in die Runde // Martin PS: Aha noch ein Commander-Fan... :-) Das freut ! |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Moin, Grübelmoin,
Ja, das ist natürlich ein unbestreitbarer Aufstieg für so ein Tool. Tja praktisch bräuchte man dann eine Tinfile-Komponente, die zunächst versucht ihre Daten ins Programmverzeichnis zu schreiben/dort zu lesen und wenn das nicht funktioniert, dann aus dem Homeverzeichnis. Also sowas ist mir bisher noch nicht untergekommen.. Grüße //Martin |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Letztendlich bin ich der Meinung, es sollte jedem Programmierer selbst überlassen werden, wo und wie er Daten speichert. Demnächst gibt es wahrscheinlich noch die "10 Windows-Richtlinien für Programmierer" oder was ? :roll: |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Naja ... die sachlichen Argumente von Michael lassen sich nicht wegdiskutieren. Es kann passieren, dass ein Programm Daten sichern möchte und dann unglücklicherweise feststellt, dass es im angegebenen Ordner keine Schreibrechte hat. Dumm gelaufen. Hier ist schon etwas Know-How seitens des Entwicklers gefragt, um mit solchen Situationen umgehen zu können.
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Trotzdem halte von solchen "Vorschriften" den Programmierern gegenüber generell nichts, jeder muss selbst wissen was und wie er es macht. |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
ich finds gut, dass das mal wieder erwähnt wurde, denn ich kenn eine unzahl an programmen die mit eingeschränkten rechten unbrauchbar sind....
:) |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zwei Beispiele: viel Software, die von Italienern programmiert wurde (ich schliesse mich da mal aus), will sich standardmaessig nach C:\<programmname> installieren. Warum? Besseres Beispiel: Software von IBM (ich weiss nicht mehr genau welche das war, AFAIR war es ein Tool fuer den Tivoli Storage Manager) bietet bei der Installation als Default-Verzeichnis C:\<irgendwas> an, man kann es aber auch aendern. Aendert man es, so wird das Programm unbrauchbar, weil viele Dinge auf diesen Ordner hardcodiert sind. Die Folge? Das Programm wurde rausgeworfen und ein Ersatz gesucht. Also, wenn sich die Mehrheit der Programmierer an die Sache mit dem Programm-Ordner haelt, warum nicht auch an die Sache mit dem User-Folder? :zwinker: Wenn es bei Kundenauftraegen heisst "das Programm soll seine Config in den Programmordner schreiben", dann ist ja gut, dann wird ein Hinweis hinzugefuegt, dass der ausfuehrende User Schreibrechte in dem Ordner haben muss, aber solange es nicht explizit dasteht, und vor allem wenn benutzerdefinierte Einstellungen gespeichert werden, wuerde ich mich ans User-Folder halten. Greetz alcaeus |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Moin, zusammen,
Tja klingt gut, aber die Tücke liegt nahe. Wenn ich ein Programm habe, welches Standartmäßig für alle User laufen soll, und die Daten liegen im speziellen Userverzeichnis, dann kann ich das Ding ja jedesmal installieren -> Monotonie ind er Südsee... Grüße // Martin |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz