Autor |
Beitrag |
moonraker
Hält's aus hier
Beiträge: 3
|
Verfasst: Di 19.07.11 13:21
Hallo Leute,
Hab ein Delphi 5 Programm zum warten.
Dieses speichert ein Projektfile als ini File mittels TInifile componente.
Nur die Endung ist anders.
Nun stellte das bis anhin kein Problem dar, auch nicht auf Windows 7 bzw Vista.
Jetzt hab ich einen W7 Rechner der mir unregelmässig verweigert das File zu erstellen (Create) oder upzudaten (TmemInifile.update).
Meldet entweder zuwenig Rechte- wenden sie sich an den admin , oder exceptuion unalbe to create.
Nun hab ich als der User aber vollzugriff auf den Ordner (das selbe File mit editor kann ich nach belkieben ändern, speichern usw)
Gespeichert wird auf dem Dokumentepfad in einem Unterordner der bei Installation angelegt wird.
Habt Ihr Tipps was da los sein könnte? Langsam gehen mir die Ideen aus.
Bin für alle Tipps dankbar.
|
|
acnut
      
Beiträge: 172
Erhaltene Danke: 3
Windows 7, Windows Vista, Windows XP, Ubuntu, Kubuntu, Pardus
Delphi 2010 SV, Java Editor, VS 2010 SV
|
Verfasst: Di 19.07.11 13:29
hab die gleichen probleme mit den ini-dateien auch gehabt und mir wurde folgendes empfohlen:
www.delphi-library.d...ewtopic.php?p=548600
_________________ Hey, die Sonne scheint, da werd ich mal in kurzen Hosen fernsehn…
|
|
moonraker 
Hält's aus hier
Beiträge: 3
|
Verfasst: Di 19.07.11 14:05
hallo acnut,
nein diesmal ist es nicht das klassische Problem dass ich keien Rechte hab.
Zumindest sollte ich sie haben, da ich das File in die eigenen Dokumente schreib.
auch die Optionen oder anderen Inis sind dort wo sie hingehören (%APPDATA% usw...)
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 19.07.11 14:19
Du könntest einmal mit dem Process Monitor die Zugriffe loggen und dann schauen was dort passiert ist.
Relative Pfade hast du sicher nirgends mehr?
|
|
moonraker 
Hält's aus hier
Beiträge: 3
|
Verfasst: Di 19.07.11 15:33
hallo,
nein, auf jeden fall nicht mehr in diesem bereich wo es mich ärgert.
hab mir auch die aktuellen pfade zur sicherheit anzeigen lassen.
Offline Dateien deaktiviern ändert ein wenig die Fehlerhäufigkeit wies scheint ??
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Di 19.07.11 15:35
mach doch mal 'n Test mit AssignFile() und las dir das IOResult() zurückgeben.
Oder einfach mal Testen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81:
| program Testme;
{$APPTYPE CONSOLE}
uses Windows, Inifiles, SysUtils, ShellAPI, ActiveX, ShlObj;
function GetSpecialFolder (CSIDL: Integer) : String; var ItemIDList: PItemIDList; sFolderPath : String; iSystemFolder : Integer; pMalloc : IMalloc; begin pMalloc := nil; sFolderPath := ''; SHGetMalloc (pMalloc); if (pMalloc = nil) then begin Exit; end; try iSystemFolder := CSIDL; if (SUCCEEDED (SHGetSpecialFolderLocation (0, iSystemFolder, ItemIDList))) then begin SetLength (sFolderPath, MAX_PATH); if (SHGetPathFromIDList(ItemIDList, PChar(sFolderPath))) then begin SetLength (sFolderPath, Length(PChar(sFolderPath))); end; end; finally Result := sFolderPath; pMalloc.Free(ItemIDList); end; end;
var myDocPath: string; myFilePath: string;
begin myDocPath := GetSpecialFolder(CSIDL_PERSONAL);
if myDocPath <> '' then begin writeln(myDocPath);
myFilePath := myDocPath + '\Test.cfg'; writeln(myFilePath);
if DirectoryExists(myDocPath) then begin with TInifile.Create(myFilePath) do try WriteString('Testsection', 'Test', 'Test123'); writeln('write to Inifile...'); finally Free; end;
end else begin writeln('Path existiert nicht !'); end;
end else begin writeln('Path ist leer !'); end;
writeln('done.'); readln; end. |
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
|