Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Root in einen String "packen" (https://www.delphipraxis.net/7037-root-einen-string-packen.html)

F.W. 30. Jul 2003 22:38


Root in einen String "packen"
 
Mein Programm soll in den Eigenen Dateien arbeiten. Dafür muss es wissen, wo die sind, ei mir sind die z.B. auf D:\, ein anderer hat sie auf C:\.
Dann gibts den Unterschied zwischen ME(und tiefer) und XP d.h. in den Eigenen Dateien Unterordner für die angemeldeten Personen(gibts ja bei ME auch, allerdings werden das ja die meisten privat-Benutzer sicher lassen.).

Wie kann ich jetzt rfPersonal in den String bekommen.

Bsp:
Delphi-Quellcode:
 Copy(PChar("rfPersonal"+'help.txt'), PChar('C:\Temp\help.txt'), False);
Wobei dann "rfPersonal" der Root von den Eigenen Dateien wäre.

Danke schonmal im voraus!

Duffy 31. Jul 2003 06:03

Re: Root in einen String "packen"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo F.W.,
um den Pfad der "Eigene Dateien" herauszubekommen, habe ich hier mal zwei Funktionen.
1. Generelle Funktion um spezielle Pfade zu holen
Delphi-Quellcode:
function GetSpecialFolder(Folder: Integer): string;
var
  aPidl: PItemIDList;
  fLinkDir: string;
begin
  if SUCCEEDED(SHGetSpecialFolderLocation(Application.Handle, Folder, aPidl)) then
  begin
    SetLength(fLinkDir, MAX_PATH);
    SHGetPathFromIDList(aPidl, PChar(fLinkDir));
    SetLength(fLinkDir, StrLen(PChar(fLinkDir)));
    Result := fLinkDir;
  end;
end;
2. Die Funktion um den Pfad des Ordner ""Eigene Dateien" zu holen
Delphi-Quellcode:
function GetPersonalFolder: string;
begin
  Result := GetSpecialFolder(CSIDL_PERSONAL);
end;
noch die Unit "ShlObj" einbinden und das wars
bye

-Amazeroth- 31. Jul 2003 08:44

Re: Root in einen String "packen"
 
Hi Duffy,

haben wir in dem Code nich was vergessen *g*, Zitat aus der Doku zu SHGetSpecialFolderLocation():

Zitat:

The calling application is responsible for freeing this pointer with the Shell's IMalloc interface (see SHGetMalloc).
Delphi-Quellcode:
var
  ppMalloc: IMalloc;
begin
  if SHGetMalloc(ppMalloc) = NOERROR then
  try
// Hier dein Aufruf ...
// Wenn Erfolg dann Versuch ...  
    try
// Hier kann noch mit der ItemID List gearbeitet werden
    finally
      ppMalloc.Free(pidl);
    end;
  finally
// Bis hier kann man ppMalloc auch statt GetMem/FreeMem gebrauchen
    ppMalloc._Release;
  end;
end;
Eigentlich gehört auch noch ein CoInitialize() davor, aber ich hatte bisher nie Probleme ohne es.

F.W. 31. Jul 2003 16:58

Re: Root in einen String "packen"
 
Danke, ich habe leider gerade keine Zeit, aber ich werde es mir anschauen, sobald ich wieder Zeit habe.

Danke!!!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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