AGB  ·  Datenschutz  ·  Impressum  







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

{$I-} bei rewrite

Ein Thema von fkerber · begonnen am 28. Okt 2004 · letzter Beitrag vom 28. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

{$I-} bei rewrite

  Alt 28. Okt 2004, 22:04
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:
{$I-}   // <---
rewrite(Dateivariable);
{$I+}   // <---
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?)

Ciao Frederic

Edit: @Ultimator: Da sind mehr Sonderzeichen im Titel
Frederic Kerber
  Mit Zitat antworten Zitat
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#2

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:15
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:
Anmerkungen

Mit der Direktive $I wird die automatische Code-Generierung aktiviert bzw. deaktiviert, die nach jedem Aufruf einer E/A-Prozedur das Ergebnis überprüft. Eine ausführliche Beschreibung der E/A-Prozeduren finden Sie in der Delphi-Sprachreferenz. Siehe Standardroutinen und E/A. Wenn eine E/A-Prozedur bei aktiviertem $I-Schalter ein Ergebnis ungleich 0 zurückgibt, führt dies zu einer EInOutError-Exception (bzw. zum Programmabbruch, wenn die Exception-Behandlung nicht aktiviert ist). Ist der Schalter $I deaktiviert, muss die E/A-Operation durch einen Aufruf von IOResult auf Fehler geprüft werden.
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#3

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:18
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 ). 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äß
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:32
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:
{$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;
Es bestünde dann auch noch die Möglichkeit das ganze, statt mit {$I...}, über try...except / try...finally abzusichern.


[edit]
genau, solange der eventuelle Fehler nicht mittels IOResult abgerufen und dadurch zurückgesetzt wird, dann machen die nachfolgenden Dateifunktionen nichts mehr.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:34
Hi!

Danke, dass das auch mit Try-Except geht, dachte ich mir, aber ich glaube diese Wörter gibt es in Schul-Delphi nicht
Demnach darf ich es dann acuh nicht verwenden.

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:36
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 )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:38
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:43
Aber IOResult kennt doch das Schuldelphi?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#9

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:46
Hi!

In den letzten 1,5 Jahren mal noch nicht. Und ich befürchte, es bleibt dabei.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: {$I-} bei rewrite

  Alt 28. Okt 2004, 22:50
als {$I-} ohne IOResult, sowas nenn ich strafbar ... die sollte man mal verklagen
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:04 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