Die Info erhältst Du beispielsweise, wenn Du die Datei mit den "alten" Methoden öffnest.
In dem Beispiel hier versuche ich das mal ganz brutal mit dem Windows Swap file:
Delphi-Quellcode:
{$I-}
assignfile(f, 'c:\bootlog.txt'); // <- Auf meinem XP darf ich diese Datei nicht anrühren ;)
reset(f); // Öffnen mit Lese- und Schreibrechten. Das läßt mich XP nie im Leben...
SharingViolation := IOResult = 32; // Wird true, weil IOResult 32 zurückliefert.
Dieser Zugriff liefert den Fehler 32 (=ERROR_SHARING_VIOLATION).
(siehe
MSDN Help)
Nicht vergessen: Der Code-Schnipsel oben ist nur minimal. Nur so als Denkanstoß. Da gehört ein closefile(..) dazu, FileMode sollte 2 sein und nicht 0, weil sonst taucht die Fehlermeldung u.U. nicht auf. Und $I- muß u.U. wieder zurückgestellt werden. Und so weiter und so fort....
Mit $I+ kann man aber bestimmt auch den IOError mit try except abfangen und da die "32" rausdröseln, oder?
Vielleicht sollte man auch noch den Fehler 33 mit abfangen?
Gruß
Michael