Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mal wieder das nervige Thema Speicherorte (https://www.delphipraxis.net/146205-mal-wieder-das-nervige-thema-speicherorte.html)

Jens Hartmann 15. Jan 2010 15:04


Mal wieder das nervige Thema Speicherorte
 
Hallo zusammen,

es wird hier zwar ständig durchgekaut, aber irgendwie bin ich mir immer noch nicht sicher was jetzt wirklich richtig ist. Ich habe hier schon mehrer Threads verfolgt und versucht diese Entscheidung mit den Speicherorten auch für mich zu übernehmen. Nachdem ich mit viel Mühe und Kleinarbeit mein Programm umgebaut habe, treten aber immer noch Fehler beim Speichern in einer einfachen INI Datei auf.

Die INI Datei habe ich in folgendem Verzeichnis gespeichert.

Betreibssystem Windows Vista

C:\ProgrammData\hu\inf\NetCon.ini

Bei XP hatte ich die mit dem selben Init-String
Delphi-Quellcode:
const
  strAppDataDir = '\HU\inf\';
....

var
  AppDataDir : string;
  sMessage : String;
begin
try
  AppDataDir := GetSpecialFolder(CSIDL_COMMON_APPDATA) + strAppDataDir;
in folgedem Verzeichnis...

C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\hu\inf\NetConf.ini

Entweder, habe ich immer da noch was falsch verstanden oder irgendwas falsch gemacht. Weil ich in dem Verzeichnis unter Vista manchmal speichern kann und manchmal nicht. Ich bin aber immer als Admin angemeldet. Und es müsste ja in dem Pfad auch als User gehen. ODER?

Gruß Jens

Uwe Raabe 15. Jan 2010 15:11

Re: Mal wieder das nervige Thema Speicherorte
 
Überprüf das mal in deinen Sourcen:

C:\ProgrammData\hu\inf\NetCon.ini
C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\hu\inf\NetConf.ini

Jens Hartmann 15. Jan 2010 15:18

Re: Mal wieder das nervige Thema Speicherorte
 
Der Pfad stimmt. Ich weiß nicht wo das Problem liegt. Seltsamer weiße tritt das Problem auch nicht immer auf. Ich muss das jetzt noch mal prüfen. Ich kann die Datei z.B. auch nicht von Hand ändern. Das heitßt ich muss dafür folgendes machen.

Datei Öffnen
Datei Ändern
Datei am selben Ort unter anderem Namen speichern
Orginal Datei löschen
Geänderte Datei wieder in Original Namen ändern
Jetzige Datei Öffnen
Datei wieder Ändern
Datei Speichern geht mit Orginal Namen. :gruebel:

Laptop AUS -> Laptop AN -> Problem wie eben erläutert

Gruß Jens

Uwe Raabe 15. Jan 2010 15:58

Re: Mal wieder das nervige Thema Speicherorte
 
Zitat:

Zitat von Jens Hartmann
Der Pfad stimmt.

Ich meinte eigentlich die Dateinamen - die sind nämlich unterschiedlich.

Jens Hartmann 15. Jan 2010 16:00

Re: Mal wieder das nervige Thema Speicherorte
 
Sorry, ist mir nicht aufgefallen. Ist aber nur ein TipFehler. Hatte das von Hand hier eingetragen.

Gruß Jens

Uwe Raabe 15. Jan 2010 16:10

Re: Mal wieder das nervige Thema Speicherorte
 
Ist "C:\ProgrammData" auch ein Tippfehler?

Jens Hartmann 15. Jan 2010 16:13

Re: Mal wieder das nervige Thema Speicherorte
 
Jupp :thumb:

Uwe Raabe 15. Jan 2010 16:17

Re: Mal wieder das nervige Thema Speicherorte
 
Wo kommt denn GetSpecialFolder her? Kann ich bei mir so nicht finden...

Jens Hartmann 15. Jan 2010 16:26

Re: Mal wieder das nervige Thema Speicherorte
 
Ist folgende procedure.

Das Ergebnis des Strings stimmt auch. Habe ich hundert mal probiert.

Delphi-Quellcode:
{Speicherpfad ermitteln um Speicherziel der User Einstellungen festzulegen}
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
    begin
      Allocator.Free (pIdL);
      {$IFDEF VER100}
      Allocator.Release;
      {$ENDIF}
    end;
  Result := Path;
end;
Gruß Jens

Christian Seehase 15. Jan 2010 21:06

Re: Mal wieder das nervige Thema Speicherorte
 
Moin Jens,

Zitat:

Zitat von Jens Hartmann
Und es müsste ja in dem Pfad auch als User gehen. ODER?

In "All Users\Anwendungsdaten" hat der normale Benutzer keine Schreibrechte, sondern erst in Unterverzeichnissen.
Unter Windows Vista bzw. 7 habe ich noch nicht nachgesehen.
Schau doch einfach mal im Reiter "Sicherheit" welche Rechte ein Benutzer hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Seite 1 von 2  1 2      

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