Pfad-Umgebung abfrage

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Pfad-Umgebung abfrage

Beitrag von KatSeiko »

Mit welchem Befehl kann ich Daten wie z.B. den Pfad zum AppData-Ordner auslesen? GetUserDirectory() ist der einzige Befehl, den ich zu diesem Thema gefunden habe, aber er gibt nicht ganz das wieder, was ich möchte... (Üblicherweise ist der AppData-Ordner ohne Schreibblockade, auch wenn man im User-Modus ist und nicht unter XP)...
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Den Pfad zum AppData-Verzeichnis kannst du mit dem Beispielcode von ts-soft ermitteln:

Code: Alles auswählen

Procedure.s GetSpecialFolder(CSIDL.l)
  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      CoTaskMemFree_(*itemid)
      If Right(location, 1) <> "\" : location + "\" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure

Debug GetSpecialFolder(#CSIDL_APPDATA)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Danke, das scheint zu funktionieren (muss ich nur noch auf Vista und XP testen). :allright:

An wen muss ich mich denn mit Verbesserungsvorschlägen für PureBasic wenden? Wenn ich Windows frage, wo ein besonderer Ordner ist, z,B, der AppData-Ordner, benutze ich "%APPDATA%... Wenn man unter CMD den Befehl SET eingibt, wird direkt eine Liste mit Umgebungsvariablen ausgespuckt. Eine Funktion wie "GetSystemVariable(name.s)" wär da eigentlich nicht verkehrt.. So weit ich das erkennen kann, fragt GetUserDirectory() auch nur nach der Variablen "USERPROFILE".
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> An wen muss ich mich denn mit Verbesserungsvorschlägen für PureBasic wenden?

http://www.purebasic.fr/english/viewforum.php?f=3


... allerdings würde ich dir durchaus erstmal eine kräftige Portion RTFM empfehlen ... :twisted:

http://www.purebasic.com/german/documen ... ables.html
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Okay, aber eins musst du zugeben: Auf diesen Namen muss erst mal einer kommen! :D
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

...was nicht schwer ist, denn wer Englisch kann, denkt immer so:

get = kriege
environment = umgebung
variable = variable

GetEnvironmentVariable() ist also ein einfacher, syntaktisch selbsterklärender Befehl. Um den geht's, damit kriegst du %AppData% direkt, ExamineEnvironmentVariable() ist nur nötig, um nach unbekannten Umgebungsvariablen zu suchen, die du (noch) nicht kennst.
Einer der Englisch kann, gibt also "get" ein uns liest sich schnell die Autocomplete-Einträge durch.


Wer neugierig ist und gern ausprobiert, hätte es zum Beispiel so versucht:

Code: Alles auswählen

SetCurrentDirectory("%APPDATA%")
appdata.s=GetCurrentDirectory()

Debug appdata

ExamineDirectory(0, appdata, "")
; Verzeichnis auslesen
...weil er vermutet, dass SetCurrentDirectory() die Variable autoamtisch konvertiert.


Anscheinend bist du weder des Englischen mächtig oder neugierig, also hoffen wir, dass du wenigstens rational bist und deutsch verstehst:

Denn so einer hätte die Hilfe aufgeschlagen, nicht gewusst, in welcher Kategorie GetEnvironmentVariable() gehört und "Misc" aufgeschlagen. Mist, steht da nicht. FileSystem vielleicht? Nö auch nicht. Ah da, vielleicht ist es "Process". Bingo, Ingo!



Schade, dass du in keine dieser 3 KatEgorien gehörst, KatSeiko.
Eines muss man dir aber lassen:
Mit deinem "GetSystemVariable()" lagst du ja nicht sehr verkehrt. Also versuche demnächst doch mal, zu Kategorie 1 zu gehören und vielleicht löst sich dann dein Problem von selbst!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Mußt Du eigentlich ständig so überheblich sein?

Im Übrigen kann es doch auch gut sein, daß er nichtmal den deutschen Begriff "Umgebungsvariable" kennt (weil dieser Begriff ungefähr genauso intuitiv ist wie "Eingabegebietsschemaleiste" oder sowas), wie soll er dann aus dem Nichts heraus auf "Environment" kommen?
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Gut, ich hätte auch Kaeru Gaman rezitieren können, aber dann wäre es nicht so konstruktiv gewesen.

Ich wusste nicht, dass Vorschläge für Problembewältigung so wenig gefragt sind. Da frage ich mich dann wiederum, was die ganzen Unterforne hier sollen. Offtopic reicht doch. :|

P.S.: Das war Ironie.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

KatSeiko hat geschrieben:Okay, aber eins musst du zugeben: Auf diesen Namen muss erst mal einer kommen! :D
öhm... nö.
Auch die Help hat ne Suchfunktion.
"*environment*" ins suchfeld einzugeben ist völlig ausreichend.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Kaeru Gaman hat geschrieben:
KatSeiko hat geschrieben:Okay, aber eins musst du zugeben: Auf diesen Namen muss erst mal einer kommen! :D
öhm... nö.
Auch die Help hat ne Suchfunktion.
"*environment*" ins suchfeld einzugeben ist völlig ausreichend.
Joa, hätt ich das bloß nie gemacht, ich bereue es heute. Ich hätte viel mehr in Foren Fragen sollen statt selbst zu suchen. Jetzt ist meine Motivation erschöpft, weil ich zuviel übers Programmieren in meinem Bereich weiß. Früher war das nicht so als ich noch in Foren alles erfragt hab. :freak:
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten