AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exceptions/Rückmeldung bei TFilestream

Ein Thema von mentaltec · begonnen am 28. Sep 2012 · letzter Beitrag vom 29. Sep 2012
Antwort Antwort
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#1

Exceptions/Rückmeldung bei TFilestream

  Alt 28. Sep 2012, 12:47
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:
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;
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;
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

Geändert von mentaltec (28. Sep 2012 um 13:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#2

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 28. Sep 2012, 12:53
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 Bei Google suchenVirtualStore umgeleitet.


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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Sep 2012 um 12:57 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 28. Sep 2012, 12:53
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.
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#4

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 28. Sep 2012, 13:04
Ihr habt ja alle Recht - das Ding ist neu für mich

merci
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#5

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 28. Sep 2012, 13:14
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 28. Sep 2012, 17:55
[...] oder man fügt seinem Programm ein entsprechendes Manifest mit, welches das Programm als "kompatibel" kennzeichnet und somit auch diese Virtualisierungen los.
Das Manifest sorgt aber auch nur dafür, dass du beim Start des Programms jedesmal gefragt wirst, ob du dies mit Admin-Rechten ausführen willst. Ist ja auch nicht Sinn der Sache. Und wenn es nicht unbedingt zwingend notwendig ist, sollte man sich sicher sein, dass man seine Daten wirklich in ein restriktives Verzeichnis schreiben will und wieso man das macht. Und so wie mentaltec anhört, ist er sich da nicht so sicher ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#7

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 29. Sep 2012, 07:53
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Sep 2012 um 07:56 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 29. Sep 2012, 17:50
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)
...
Ja. Nur wird dich dann Windows (zumindest bei UAC / Kompatibilität) trotzdem nach erhöhten Rechten fragen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#9

AW: Exceptions/Rückmeldung bei TFilestream

  Alt 29. Sep 2012, 18:22
Oder es verwehrt einfach den Zugriff und schon hat der TE seine gewünschte Exception.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
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