![]() |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
...:cat:... |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Moin, moin,
das kann man nur mit einem Lächeln kommentieren: Wer auf dem eigenen Rechner mit SwapIT keine Schreibrechte hat, der sollte sich mal gedanken darüber machen, über was er überhaupt noch etwas zu sagen hat. Ja, für die Kandiaten gilt: Schweigen ist Gold. :mrgreen: // Martin |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hallo Luckie,
über diese ![]() Bei der function GetShellFolder ist mir folgendes aufgefallen:
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var pidl : PItemIdList; FolderPath : string; SystemFolder : Integer; begin SystemFolder := CSIDL; if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then begin SetLength(FolderPath, max_path); if SHGetPathFromIDList(pidl, PChar(FolderPath)) then begin SetLength(FolderPath, length(PChar(FolderPath))); end; end; Result := FolderPath; // <- Welchen Wert hat FolderPath wenn // SUCCEEDED einen Fehler zurückgibt ??? // Hier wird pidl nicht freigeben -> Funktion erzeugt Speicherleck end; Zitat:
Delphi-Quellcode:
Ich schreibe Artikel oder Tutorials wenn 100%tig weiss was ich schreibe. Deshalb habe ich noch nie einen Artikel oder ein Tutorial geschrieben.
function GetShellFolder(CSIDL: integer): string;
var pidl : PItemIdList; FolderPath : string; SystemFolder : Integer; Malloc : IMalloc; // Interface für IMalloc begin Malloc:=Nil; FolderPath:=''; // Initialisieren damit Result immer definiert ist SHGetMalloc(Malloc); // Interface holen damit am Ende pidl freigegeben werden kann If Malloc=Nil then begin Result:=FolderPath; Exit; end; Try SystemFolder := CSIDL; if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then begin SetLength(FolderPath, max_path); if SHGetPathFromIDList(pidl, PChar(FolderPath)) then begin SetLength(FolderPath, length(PChar(FolderPath))); end; end; Result := FolderPath; Finally Malloc.Free(pidl); // Speicher freigeben end; end; |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Oh besten Dank, ist mir irgendwie immer entgangen.
|
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Hi Luckie,
hab gerade ein kleines Tool geschrieben und konnte deine Funktion dabei gut gebrauchen. Beim erneuten Lesen deines Artikels ist mir ein Verbesserungsvorschlag gekommen, verlinke doch auf die MSDN und zwar auf ![]() Da findet der Leser gleich eine Liste der CSIDLs und kann sich die raussuchen die er benötigt. Schönen Gruß, |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
@Luckie
Jetzt wollte ich mal einen deiner Artikel verlinken ( ![]() Bei den anderen Artikeln auf deiner Seite hat sich ja das Design ein bisschen verändert, aber diesen hier kann ich nirgends mehr finden. Wäre schön, wenn du den wieder herstellen könntest :) |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Da ist er doch:
![]() |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Ich hätte zwei Vorschläge zu:
![]() a) ein Aufrufbeispiel wäre schön und b) die Konstantenliste und die Pfade, die man dazu bekommt. Hier die KonstantenListe:
Delphi-Quellcode:
Zugegeben: Eigentlich sind die Bezeichnungen schon aussagekräftig genug.
CSIDL_DESKTOP = $0000;
CSIDL_INTERNET = $0001; CSIDL_PROGRAMS = $0002; CSIDL_CONTROLS = $0003; CSIDL_PRINTERS = $0004; CSIDL_PERSONAL = $0005; CSIDL_FAVORITES = $0006; CSIDL_STARTUP = $0007; CSIDL_RECENT = $0008; CSIDL_SENDTO = $0009; CSIDL_BITBUCKET = $000a; CSIDL_STARTMENU = $000b; CSIDL_DESKTOPDIRECTORY = $0010; CSIDL_DRIVES = $0011; CSIDL_NETWORK = $0012; CSIDL_NETHOOD = $0013; CSIDL_FONTS = $0014; CSIDL_TEMPLATES = $0015; CSIDL_COMMON_STARTMENU = $0016; CSIDL_COMMON_PROGRAMS = $0017; CSIDL_COMMON_STARTUP = $0018; CSIDL_COMMON_DESKTOPDIRECTORY = $0019; CSIDL_APPDATA = $001a; CSIDL_PRINTHOOD = $001b; CSIDL_ALTSTARTUP = $001d; // DBCS CSIDL_COMMON_ALTSTARTUP = $001e; // DBCS CSIDL_COMMON_FAVORITES = $001f; CSIDL_INTERNET_CACHE = $0020; CSIDL_COOKIES = $0021; CSIDL_HISTORY = $0022; Damit erübrigen sich dann einige Fragen in der DP sehr schnell. Mit besten Grüßen Go2EITS |
Re: Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzei
Zitat:
1.) was wenn die Software selber die Benutzer verwalten muß und dazu in einer einzigsten Datei deren Passwörter etc. abspeichern möchte. Diese Datei kann man nicht für jeden Benutzer duplizieren da die Software Zugriff auf diese Einstelungen für alle Benutzer gmeinesam haben muß 2.) was ist wenn man die Software in einem Netzwerk installiert, aus administrativen Gründen der Fernwartung 3.) was ist wenn man die Software durch kopieren des Ordners packen, installieren, backupen will ? Muß man sich dann diese Benutzereinstelungen alle wieder verteilt auf den Rechnern zusammensuchen ? 4.) was ist wenn die Software Benutzerabhängig aber Computer-Unabhngig in einer Netzwerkinstalation arbeiten soll ? Dh. egal an welchem Rechner sich der Benutzer anmeldet wer findet immer seine individuellen Einstellungen vor. 5.) was ist wenn diese Konfigurationsdaten durch die eigene Sofware verändert werden müssen, aber Benutzer-Unabhängig weil es keine Benutzerdaten sind sondern global gültige Einstellungen ? Ja, man könnte jetzt sagen dann installiere deine Netzwerk-Domäne richtig, was dann zwangsläufig einen Windows Server vorraussetzt. Funktioniert bei einfachen Netzwerken als Fileserver eben nicht mehr. Und wir haben wiederum das Problem das die Benutzereinstellungen auf dem Lokalen Computer gespeichert werden. Ich preferiere immer noch das Speichern der Daten relativ zum Programpfad, wenn die Software eine eigene Userverwaltung benutzt oder eben gobale für alle Benutzer gültige Einstellungen speichern möchte. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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