![]() |
Exceptions/Rückmeldung bei TFilestream
Hallo,
ich steh ein wenig im Walde: eigentlich will ich nur ne Datei schreiben - geht auch ;-) aber ich will auch ne Notitz, wenns nich geklappt hat und das möglichst ohne die Datei wieder zurückzulesen wenn ich Filestore für eine Datei aufrufe, für die ich Adminrechte brauche, bekomm ich keine Fehlermedung bein FileStraem.create, auch nicht beim .Writebuffer, selbst fs.size liefert die korrekte Anzahl bytes zurück; aber die Datei selbst wird natürlich nicht angelegt hier das Fragment:
Delphi-Quellcode:
ich hab das Gleiche nochmal mit FileCreate und Filewrite nachgebaut, auch da wird mir die korrekte Anzahl von Bytes als geschrieben zurückgemeldet, obwohl die Datei natürlich nicht angelegt wird;
function FileStore(name, content : String) : Boolean;
var fs : TFileStream; s : string; begin Result := false; try fs := TFileStream.Create(name, fmCreate or fmShareExclusive); try fs.WriteBuffer(PChar(content)^, Length(content)); if fs.size <> Length(content) then raise exception.Create(' nicht genug Rechte/Platz, um Datei '+ name +' zu schreiben'); finally freeAndNil(fs); end; Result := true; ... except Fehlermeldung end; da kann doch was nicht stimmen achso : verwendete IDE Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451; Win 7 Home Premium mfg |
AW: Exceptions/Rückmeldung bei TFilestream
In welches Verzeichnis willst'e denn reinschreiben.
Ich vermute mal, daß dein Schreiben "erfolgreich" ist, aber da dein Programm nicht sagt, daß es kompatibel mit Win7 ist, schlägt hier die Virtualisierung zu und dein Schreibzugriff wird in den ![]() PS: Für viele sind die Versionsnamen verständlicher, als die interen Versionsnummern. Du meinst do bestimmt Delphi 2006 oder Turbo Delphi? Tipp: Mit [DELPHI]dein Code[/DELPHI]-Tags drumrum, ließe sich dein Code besser lesen. Ach ja, WriteBuffer wirft von sich aus eine Exception, wenn nicht alles geschrieben werden konnte. |
AW: Exceptions/Rückmeldung bei TFilestream
Das liegt daran, dass die Datei virtualisiert wird.
Schau mal unter C:\Users\<...>\AppData\Local\VirtualStore\... Da wirst du mit Sicherheit die Datei irgendwo finden. Ob eine Datei Adminrechte zum schreiben braucht, musst du anders feststellen. |
AW: Exceptions/Rückmeldung bei TFilestream
Ihr habt ja alle Recht - das Ding ist neu für mich
merci |
AW: Exceptions/Rückmeldung bei TFilestream
Das wurde von Microsoft eingeführt, für alte "inkompible" Programme, welche z.B. immernoch, ohne die nötigen Rechte, in Verzeichnissen rumschreiben wollen, wo sie es nicht dürfen.
(dabei gibt es diese Rechte eigentlich schon seit über 10 Jahren, nur das bis XP fast alle ständig mit vollen Adminrechten rumgerannt sind und keiner was davon merkte) Microsoft wollte damit dafür sorgen, daß alte/schrottige Programme immernoch funktionieren können, selbst wenn sie sich nicht an die Regeln halten. Man kann die Virtualisierung irgendwie per WinAPI deaktivieren (bei jedem Start des eigenen Programms) oder man fügt seinem Programm ein entsprechendes Manifest mit, welches das Programm als "kompatibel" kennzeichnet und somit auch diese Virtualisierungen los. |
AW: Exceptions/Rückmeldung bei TFilestream
Zitat:
|
AW: Exceptions/Rückmeldung bei TFilestream
Nein, denn ich hab nichts von Adminmanifest gesagt.
Mit einem Manifest kann man die GUI steuern (neuen Style ala XP) und/oder die Kontrolle des UAC (Admin oder nicht) und/oder die Kompatibilitätsangaben (seit Vista) und/oder Side-by-Side (SxS) ... OK, wenn er wirklich unbedingt da reinschreiben will, dann kommt er um die höheren Rechte (Admin) eh nicht drumrum. |
AW: Exceptions/Rückmeldung bei TFilestream
Zitat:
|
AW: Exceptions/Rückmeldung bei TFilestream
Oder es verwehrt einfach den Zugriff und schon hat der TE seine gewünschte Exception. :angle2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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