fmClose und Co. sind "komische" Magicnumbers. (als Enum, mit fmClose=0 wären die praktischer gewesen)
Nein wäre es nicht, weil man dann nicht unterscheiden könnte, ob schon ein assign gemacht wurde oder nicht!
Stimmt auch wieder. Mir fällt zwar auf die Schnelle kein Grund ein, warum ich das wissen wollte, aber da gibt es bestimmt "kreativere" Menschen.
Übrigens ist mir gerade beim Betrachten der Implementation von AssignFile (also System._Assign) ein Lapsus aufgefallen: Die Länge des übergebenen Strings wird nicht geprüft. Führt man folgende Routine aus
Delphi-Quellcode:
procedure Test2;
var
Opfer: ShortString;
f: TextFile;
begin
Opfer := StringOfChar('.', 255);
AssignFile(f, StringOfChar('X', 500));
end;
so verstümmelt der Aufruf von AssignFile kommentarlos die Variable Opfer. Klar ist der übergebene String kein gültiger Dateiname, aber eine
Exception wäre da wohl schon angebracht.