![]() |
{$I-} bei rewrite
Hi!
Wir besprechen in der Schule (GK Info 12) gerade den Datentyp file. Dabei hat unser Info-Lehrer gemeint, dass Delphi äußerst allergisch reagieren würde, falls bei Rewrite etwas schief geht (z.B. die Datei nicht da ist oder wie auch immer). Auf jeden Fall wäre die einzige Möglichkeit, da größeren Schaden abzuwenden die folgende:
Delphi-Quellcode:
Mir geht es halt eben in erster Linie um die markierten Compiler-Switches. Sind sie wirklich erforderlich? Was kann sonst passieren? (Sie schalten Delphis Fehlerbehandlung aus, oder?)
{$I-} // <---
rewrite(Dateivariable); {$I+} // <--- Ciao Frederic Edit: @Ultimator: Da sind mehr Sonderzeichen im Titel :wink: |
Re: {$I-} bei rewrite
Ich denke nicht das die erforderlich sind.. Ich hab schon soo oft daten geöffnet, beschrieben usw und mir ist noch nie was passiert.
Soweit ich das aus der hilfe lese unterdrückt dir compilerschalter die Fehlermeldung die auftritt wenn die datei nicht vorhanden ist!? Naja würd ich sowieso immer vorher überprüfen ob die datei vorhanden ist.. Hier nochma der auszug ausser delphi hilfe: Zitat:
|
Re: {$I-} bei rewrite
Hallo,
wenn die nicht abgeschalten werden dann wird der Nutzer mit einem RunTimer Error geägert (sicher irgend eine Exception heutzutage... ich schreibe hier mit meinem Borland Pascal 7.1 wissen :stupid:). Die IO-Prüfungen kann man auch irgendwo in den Compileroptionen abschalten. wenn die Abgeschalten sind kann/muß man über IOResult abfragen ob ein Fehler aufgetreten ist. Wenn man das nicht macht, dann verlaufen weitere Operationen ins leere (glaube nur nachdem ein Fehler auftrat). Ist aber nicht mehr ganz Zeitgemäß :shock: |
Re: {$I-} bei rewrite
Also ich hab da bis jetzt auch noch keine Probleme gehabt,, aber wenn du schon mit {$I-} die fehlerbehandlung abschaltest, dann solltest du auch nacher selber über IOResult prüfen, ob auch alles gutgegangen ist.
Delphi-Quellcode:
Es bestünde dann auch noch die Möglichkeit das ganze, statt mit {$I...}, über try...except / try...finally abzusichern.
{$I-}
Rewrite(F); {$I+} if IOResult = 0 then begin // schreib was ... CloseFile(F); end; {$I-} Rewrite(F); {$I+} if IOResult = 0 then begin // schreib was ... CloseFile(F); end else begin // 'ne Fehlermeldung end; [edit] genau, solange der eventuelle Fehler nicht mittels IOResult abgerufen und dadurch zurückgesetzt wird, dann machen die nachfolgenden Dateifunktionen nichts mehr. |
Re: {$I-} bei rewrite
Hi!
Danke, dass das auch mit Try-Except geht, dachte ich mir, aber ich glaube diese Wörter gibt es in Schul-Delphi nicht :wink: Demnach darf ich es dann acuh nicht verwenden. Ciao Frederic |
Re: {$I-} bei rewrite
Moin Zusammen,
wobei ich eine Fehlervermeidung, einer Fehlerunterdrückung vorziehe. Soll in diesem Falle heissen: Erst prüfen, ob die Datei existiert (z.B. mit FileExists), statt eine evenuelle Exeption abzufangen. (dass die Datei dann vielleicht schreibgeschützt ist, ist dann wieder eine andere Sache ;-)) |
Re: {$I-} bei rewrite
Hi!
@Christian: Das ist im Prinzip das Paradoxe: Solche Sachen wie FileExists oder ähnliches werden einfach gar nicht erwähnt und wie gesagt, dann dürfen sie auch nicht verwendet werden. Ciao Frederic |
Re: {$I-} bei rewrite
Aber IOResult kennt doch das Schuldelphi?
|
Re: {$I-} bei rewrite
Hi!
In den letzten 1,5 Jahren mal noch nicht. Und ich befürchte, es bleibt dabei. Ciao Frederic |
Re: {$I-} bei rewrite
als {$I-} ohne IOResult, sowas nenn ich strafbar ... die sollte man mal verklagen :wall:
|
Re: {$I-} bei rewrite
Hi!
Jepp, das Problem ist: Schon das oben erwähnte verstehen 80% meines Kurses nicht. Und das ist dann schon schwierig da irgendwie tief in die Materie einzusteigen. Es gleicht im Moment eher "Abtippen, was der Lehrer sagt" Ciao Frederic |
Re: {$I-} bei rewrite
Moin Frederic,
Zitat:
Zitat:
|
Re: {$I-} bei rewrite
Hi!
Ja, sie macht es hauptamtlich und hat auch eigentlich einiges an Erfahrung mit Programmierung (arbeite noch in verschiedenen Projekten mit ihm zusammen.) Ich denke, es liegt wirklich da dran, dass es sonst zu kompiziert würde. Kann das sein? Ciao Frederic |
Re: {$I-} bei rewrite
Zitat:
Also, den Schülern in der 12 zuzumuten "if IOResult = 0" abzufragen, sollte wohl kein Problem darstellen (hoffentlich :mrgreen: ) mfG mirage228 P.S.: Wir machen jetzt gerade "Stifte und Mäuse 2.32" in Delphi :mrgreen: - Die Unit ist einfach nur arm :wall: |
Re: {$I-} bei rewrite
Hi!
Das Problem ist wohl, dass sie auch einfach nur hinschreiben würden, aber nicht verstehen. Es ging heute darum das Speichern per File zu implementieren und manche haben nur das AssignFile geschrieben und dann gefragt, warum nix in der Datei drinsteht. Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 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