Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi E/A-Fehler in Wrapperklasse (https://www.delphipraxis.net/166597-e-fehler-wrapperklasse.html)

gammatester 22. Feb 2012 09:20

AW: E/A-Fehler in Wrapperklasse
 
Zitat:

Zitat von himitsu (Beitrag 1152233)
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!

uligerhardt 22. Feb 2012 09:29

AW: E/A-Fehler in Wrapperklasse
 
Zitat:

Zitat von himitsu (Beitrag 1152233)
fmClose ist aber nicht 0 :zwinker:

Uppsi. Wer rechnet denn mit sowas? :angle2:
Zitat:

Zitat von himitsu (Beitrag 1152233)
fmClose und Co. sind "komische" Magicnumbers. (als Enum, mit fmClose=0 wären die praktischer gewesen)

Muss von mir aus kein Enum sein, aber der Ordinalwert 0 wäre vielleicht schon günstig gewesen. Naja gut, dann halt
Delphi-Quellcode:
if (TTextRec(FFile).Mode <> 0) and (TTextRec(FFile).Mode <> fmClosed) then
.

uligerhardt 22. Feb 2012 09:43

AW: E/A-Fehler in Wrapperklasse
 
Zitat:

Zitat von gammatester (Beitrag 1152236)
Zitat:

Zitat von himitsu (Beitrag 1152233)
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. :lol:

Ü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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Seite 2 von 2     12   

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