Seite 1 von 2

Problem mit Dirs erstellen

Verfasst: 11.11.2010 12:40
von Dostej
Also, ich hab ein Problem, was ich nciht verstehe...
Ich bin dabei, ein kleines Programm zu schreiben, das Daten speichert und dazu eine Ordnerstruktur anlegt.

Bisher habe ich das im Programmverzeichnis gemacht. Problemlos.

Mit dem neuen Win7 geht das ja nicht mehr so gut, also bin ich brav auf GetHomeDirectory() umgestiegen.
Das ist:
C:\Dokumente und Einstellungen\MeinName\
Ich habe das auf nem W7 Rechner (mit Debugger) getestet. Ging problemlos.
Dann habe ich das als exe unter XP jemanden zum testen gegeben. Das Problem ist nun, das das Programm scheinbar den ersten Unterordner in dem Verzeichnis erstellt.
Also
C:\Dokumente und Einstellungen\MeinName\Programmname\
nun sollte es anoch weitere Ordner erstellen
Also
C:\Dokumente und Einstellungen\MeinName\Programmname\Daten\Temp
Unter XP erstellt er wohl den ersten Unterordner. Der Rest ist aber unklar. Der User kann nicht darauf zugreifen (unzureichende Berechtigung), das Programm scheinbar auch nicht (zumindest treten Fehler, auf die darauf schliessen lassen)

(Unter Linux funktioniert die Geschcihte problemlos)

Hat jemand ne Idee, woran das liegen könnte? UNd wir man das machen könnte, das es dann auch auf allen Platformen läuft?

Danke schonmal

Re: Problem mit Dirs erstellen

Verfasst: 11.11.2010 12:59
von ts-soft
Dostej hat geschrieben: UNd wir man das machen könnte, das es dann auch auf allen Platformen läuft?

Danke schonmal
CompilerDirectiven!, damit es Systemkonform bleibt.
Unter windows APPDATA nehmen.

Gruß
Thomas

Re: Problem mit Dirs erstellen

Verfasst: 11.11.2010 14:43
von Dostej
Hallo Thomas

DAnke für die iNfo.

Zwei Fragen dazu, ob ich das richtig verstanden habe:

Also das beste ist es, per Compilerdirectiven das OS zu bestimmen und dann den Pfad je nach OS belegen.
Linux ist mir soweit klar.

Windows in APPdata. Das bekomme ich über ne API-Abfrage (Hab im Forzum was gefunden dazu
PrefsPath$ = GetEnvironmentVariable("APPDATA")

Warum geht GetHomeDirectory() nicht? Ich dachte damit bekomme ich plattformübergreifend das Appdata- Verzeichnis?

Re: Problem mit Dirs erstellen

Verfasst: 11.11.2010 15:12
von ts-soft
Dostej hat geschrieben: Warum geht GetHomeDirectory() nicht? Ich dachte damit bekomme ich plattformübergreifend das Appdata- Verzeichnis?
Es gibt nur unter Windows ein Appdata-Verzeichnis! Homedir ist in Windows nicht für Einstellungsdateien vorgesehen (ist ein Verzeichnis zu hoch :mrgreen: )

Gruß
Thomas

PS: Ohne Compilerdirektiven wird wohl nur in sehr kleinen Programmen ein MultiOS-Source möglich sein :wink:

Re: Problem mit Dirs erstellen

Verfasst: 11.11.2010 19:17
von HeX0R
ts-soft hat geschrieben:
Dostej hat geschrieben: Warum geht GetHomeDirectory() nicht? Ich dachte damit bekomme ich plattformübergreifend das Appdata- Verzeichnis?
Es gibt nur unter Windows ein Appdata-Verzeichnis! Homedir ist in Windows nicht für Einstellungsdateien vorgesehen (ist ein Verzeichnis zu hoch :mrgreen: )

Gruß
Thomas
Es gibt aber sehr viele Programme (DropBox, Gimp, Jameica, ...), die genau dort jede Menge Verzeichnisse anlegen und auch irgendwelche Dinge speichern,
ich kann mir eigentlich nicht vorstellen, dass das (gerade bei XP) nicht erlaubt sein sollte.
Steckt der Fehler nicht eher irgendwo anders?

Re: Problem mit Dirs erstellen

Verfasst: 11.11.2010 19:42
von ts-soft
HeX0R hat geschrieben:Steckt der Fehler nicht eher irgendwo anders?
Das dachte ich auch zuerst, bin dann aber nicht drauf eingegangen.

Dia, VirtualBox und ein paar andere haben bei mir auch solche Verzeichnisse angelegt.
Da Verzeichnisse die mit einem Punkt beginnen unter Windows aber nicht versteckt werden,
finde ich diese Lösung nicht so optimal (will diesen mist ja dort meist garnicht sehen :mrgreen: ) .

Gruß
Thomas

Re: Problem mit Dirs erstellen

Verfasst: 15.11.2010 12:14
von Dostej
Kein Ahnung wo der Fehler genau gesteckt hat. Mit"Appdata" - Dir geht es jedenfalls nun. Danke für die Hilfe.

Ohne das das jetzt (für mich) relevant wäre, aber ich verstehe das noch nicht so wirklich...
In der PB-Hilfe steht:
Gibt das 'Home'-Verzeichnis (Anwender-bezogen) des aktuell eingeloggten Anwenders zurück.

Dies bedeutet, dass in diesem Verzeichnis gelesen/geschrieben werden kann. Dieses Verzeichnis ist Anwender-spezifisch und kann nützlich sein, um Daten pro Anwender zu speichern (z.B. Voreinstellen, Plugins, etc.).

Es ist sehr unwahrscheinlich, aber wenn diese Funktion fehlschlägt, wird ein leerer String zurückgegeben.
Wieso gibt dann Homedir() nicht das Appdata-Dir unter Win zurück?
Was ist das für ein Dir, das da zurückgegeben wird?

Re: Problem mit Dirs erstellen

Verfasst: 15.11.2010 13:14
von ts-soft
Dostej hat geschrieben:Was ist das für ein Dir, das da zurückgegeben wird?
Das Verzeichnis, das virtuell auf dt. Systemen "Benutzer" heißt. Windows verwendet
aber nun mal dieses nicht für Einstellungen. Mit anderen Worten, Windows benutzt
nicht das "HomeDir" für Einstellungen.

Re: Problem mit Dirs erstellen

Verfasst: 15.11.2010 13:53
von HeX0R
Ich denke mal bei Windows handelt es sich um die Environmentvariable USERPROFILE.

Vielleicht sollte man für die APPDATA doch mal irgendwann eine native PB-Funktion hinzufügen,
damit ts-soft endlich die Fussel von den Lippen wischen kann... :mrgreen:

Re: Problem mit Dirs erstellen

Verfasst: 15.11.2010 14:03
von Bisonte
HeX0R hat geschrieben:Ich denke mal bei Windows handelt es sich um die Environmentvariable USERPROFILE.

Vielleicht sollte man für die APPDATA doch mal irgendwann eine native PB-Funktion hinzufügen,
damit ts-soft endlich die Fussel von den Lippen wischen kann... :mrgreen:
Wenn ein LINUX & MAC-OS Äquivalent dazu existiert, könnten die Chancen sogar gut stehen :D