Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi In .ini ohne Adminrechte speichern? (https://www.delphipraxis.net/131565-ini-ohne-adminrechte-speichern.html)

mkinzler 26. Mär 2009 21:21

Re: In .ini ohne Adminrechte speichern?
 
Probieren geht über Studieren.

DeddyH 26. Mär 2009 21:22

Re: In .ini ohne Adminrechte speichern?
 
So würdest Du ja direkt ins Anwendungsdatenverzeichnis speichern. Das ist aber so nicht gedacht, Du solltest dort ein Unterverzeichnis für Dein Programm erstellen und das dann nutzen.

AlexII 26. Mär 2009 21:27

Re: In .ini ohne Adminrechte speichern?
 
Zitat:

Zitat von DeddyH
So würdest Du ja direkt ins Anwendungsdatenverzeichnis speichern. Das ist aber so nicht gedacht, Du solltest dort ein Unterverzeichnis für Dein Programm erstellen und das dann nutzen.

Wenigstens so :dancer:

DeddyH 26. Mär 2009 21:33

Re: In .ini ohne Adminrechte speichern?
 
Mach doch mal eine Kommandozeile auf (Start - Ausführen - cmd) und gib dort ein
Code:
dir "%APPDATA%"
Vermutlich wirst Du dort nur Verzeichnisse und keine Dateien finden.

AlexII 26. Mär 2009 21:34

Re: In .ini ohne Adminrechte speichern?
 
Irgendwie wird da noch nix und nirgendwo gespeichert :gruebel: Oh man... :wall:

AlexII 26. Mär 2009 21:36

Re: In .ini ohne Adminrechte speichern?
 
Zitat:

Zitat von DeddyH
Mach doch mal eine Kommandozeile auf (Start - Ausführen - cmd) und gib dort ein
Code:
dir "%APPDATA%"
Vermutlich wirst Du dort nur Verzeichnisse und keine Dateien finden.

Doch die config.ini hat er gefungen :thumb: Aber wieso finden die Suche sie nicht?

DeddyH 26. Mär 2009 21:37

Re: In .ini ohne Adminrechte speichern?
 
Ich weiß ja nicht, wie und wo Du suchst.

AlexII 26. Mär 2009 21:39

Re: In .ini ohne Adminrechte speichern?
 
Ok es klappt jetzt alles :thumb:
Und wird das auch unter Vista gehen, was meinst du?

DeddyH 26. Mär 2009 21:41

Re: In .ini ohne Adminrechte speichern?
 
Eigentlich ist das ja von Microsoft genau so vorgesehen, sollte also auch unter Vista funktionieren.

jaenicke 26. Mär 2009 21:43

Re: In .ini ohne Adminrechte speichern?
 
Zitat:

Zitat von AlexII
Ok es klappt jetzt alles :thumb:
Und wird das auch unter Vista gehen, was meinst du?

Das sollte auch unter Vista normal klappen. In den Anwendungsdaten sollten jedenfalls der Ordnung halber Unterverzeichnisse benutzt werden, das wurde ja schon gesagt. Wie wäre es so, auch mal richtig formatiert:
Delphi-Quellcode:
uses
  ActiveX, ShlObj, IniFiles;

const
  AppDataRootDir = '\AlexII';
  AppDataProjectDir = '\Dein Projektname';
  CSIDL_LOCAL_APPDATA = $001c;

function GetSpecialFolder(aFolder: Integer): String;
var
  pIdL: PItemIDList;
  Path: array [0..Max_Path] of Char;
  Allocator: IMalloc;
begin
  // ItemIdList für den Ordner holen
  SHGetSpecialFolderLocation(0, aFolder, pIdL);
  // ItemIdList in String umwandeln lassen
  SHGetPathFromIDList(pIDL, Path);
  // Speicher wieder freigeben
  if Succeeded(SHGetMalloc (Allocator)) then
    Allocator.Free(pIdL);
  Result := Path;
end;

procedure TForm1.FormShow(Sender: TObject);
var
  Ini: TIniFile;
  UserAppDataDir: String;
begin
  UserAppDataDir := GetSpecialFolder(CSIDL_LOCAL_APPDATA);
  if FileExists(UserAppDataDir + AppDataRootDir + AppDataProjectDir + '\config.ini') then
  begin
    Ini := TIniFile.Create(UserAppDataDir + AppDataRootDir + AppDataProjectDir + '\config.ini');
    try
      ComboBox1.ItemIndex := Ini.ReadInteger('Default', 'Channel', 0);
      TrackBar1.Position := Ini.ReadInteger('Default', 'Volume', 10);
      cbDirectConnection.Checked := Ini.ReadBool('Default', 'Proxy', True);
      ed_ProxyServer.Text := Ini.ReadString('Default', 'ProxyIP', '');
    finally
      ini.free;
    end;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Ini: TIniFile;
  UserAppDataDir: String;
begin
  UserAppDataDir := GetSpecialFolder(CSIDL_LOCAL_APPDATA);
  ForceDirectories(UserAppDataDir + AppDataRootDir + AppDataProjectDir);
  Ini := TIniFile.Create(UserAppDataDir + AppDataRootDir + AppDataProjectDir + '\config.ini');
  try
    Ini.WriteInteger('Default', 'Channel', ComboBox1.ItemIndex);
    Ini.WriteInteger('Default', 'Volume', TrackBar1.Position);
    Ini.WriteBool('Default', 'Proxy', cbDirectConnection.Checked);
    Ini.WriteString('Default', 'ProxyIP', ed_ProxyServer.Text);
  finally
    Ini.Free;
  end;
  Action := caFree; // Bringt nur etwas, wenn es nicht im Hauptformular steht
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Seite 4 von 5   « Erste     234 5      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz