Autor Beitrag
Andi1982KA
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 02.12.02 20:09 
Hallo, ich hab jetzt schon oft das $i- in Geschweiften Klammern gesehen:
ausblenden Quelltext
1:
2:
3:
{$i-} 
   ReSet(f);     //Datei zum Lesen öffnen 
{$i+}


Ich habs auch jedesmal benutzt, aber was bedeudet das überhaupt? Normalerweise sind das doch kommentare.

Kennt vielleicht jemand ein gutes Tutorial in dem solche Sachen, oder überhaupt dateihandling, erklärt sind???

Gruß andi[/code]

_________________
Bald kann ichs allein ;-)
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.12.02 20:27 
Scheint so also ob das eine Compiler-Direktive wäre. In der OH steht:

Zitat:

IOCHECKS

Typ Schalter
Syntax {$I+} oder {$I-}
{$IOCHECKS ON} oder {$IOCHECKS OFF}
Vorgabe {$I+}
{$IOCHECKS ON}
Gültigkeitsbereich Lokal
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 Object Pascal Sprachreferenz. 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, muß die E/A-Operation durch einen Aufruf von IOResult auf Fehler geprüft werden.
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Di 03.12.02 08:07 
Aahh ja, weiß garnicht wir ihr solche Sachen in der Onlinehilfe immer findet.

Naja, dir auf jeden fall vielen Dank!

Gruß Andi

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 03.12.02 09:06 
Andi1982 hat folgendes geschrieben:
Aahh ja, weiß garnicht wir ihr solche Sachen in der Onlinehilfe immer findet.

Beispiel für Delphi 5 -

1. Delphi starten, und Unitfenster öffnen.
2. {$I eintippen, Cursor auf eins der drei Zeichen.
3. Mutig F1 drücken!
4. Delphi startet die Hilfe und bietet Dialogfeld mit drei Auswahlmöglichkeiten. Mit dabei: die von Popov zitierte Erklärung.

Die Hilfe, bzw. die Integration der Hilfe wird eben oft unterschätzt. :wink:
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Di 03.12.02 09:09 
Wow, das hab ich jetzt ehrlich net gewusst.

Ich hab bisher immer Über den index gesucht was ich wollte und meistens nur Beiträge gefunden wo das drin vorkam aber nicht erklärt wurde!

Und nochmals Danke!

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 03.12.02 11:17 
Hallo,
Andi1982KA hat folgendes geschrieben:
Hallo, ich hab jetzt schon oft das $i- in Geschweiften Klammern gesehen:
ausblenden Quelltext
1:
2:
3:
{$i-} 
   ReSet(f);     //Datei zum Lesen öffnen 
{$i+}

das macht aber nur sinn, in verbindung mit einer überprüfung von IORESULT. Wenn normalerweise beim öffnen einer Datei ein Problem auftritt, erzeugt dein Programm eine Exception und gegebenenfalls eine Fehlermeldung.
Mit {$i-} kannst du dieses Verhalten ausschalten. Das sollte aber immer nur sehr kurzzeitig geschehen, da es zu schweren Programm (vieleicht sogar System) Abstürzen führen kann. In deinem Beispiel ist es richtig gemacht, das nur eine einzige Zeile von der I/O-Prüfung ausgenommen ist.
Wenn mit {$i-} das Fehlerverhalten umgestellt wurde, schreibt Delphi bei Problemen lediglich einen Fehlercode in die Variable IORESULT. Diese kannst und solltest du abfragen, da du sonst eventuell mit einer nicht geöffneten Datei arbeitest.

Das sähe im Beisiel so aus (IORESULT = 0 bedeutet, kein Fehler):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
{$i-} 
   ReSet(f);     //Datei zum Lesen öffnen 
{$i+}
IF IORESULT = 0 THEN BEGIN
  // Mit Datei f Arbeiten
END
ELSE
  ShowMessage('Fehler beim öffnen der Datei');


Mögliche Fehlercodes in der Variable sind folgende:
DELPHI-Hilfe hat folgendes geschrieben:
Nummer Name Beschreibung
100 Fehler beim Lesen vom Datenträger Wird von Read für eine typisierte Datei gemeldet, wenn Sie versuchen, über das Dateiende hinaus zu lesen.
101 Fehler beim Schreiben auf Datenträger Wird von CloseFile, Write, WriteIn oder Flush gemeldet, wenn der Datenträger voll ist.
102 Dateivariable ist keiner Datei zugewiesen Wird von Reset, Rewrite, Append, Rename oder Erase gemeldet, wenn der Dateivariablen kein Name durch einen Aufruf von Assign oder AssignFile zugewiesen wurde.
103 Datei nicht geöffnet Wird von CloseFile, Read Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead oder BlockWrite gemeldet, wenn die Datei nicht geöffnet ist.
104 Datei wurde nicht für Eingabe geöffnet Wird von Read, Readln, Eof, Eoln, SeekEof oder SeekEoln für eine Textdatei gemeldet, wenn diese nicht zur Eingabe geöffnet ist.
105 Datei wurde nicht für Ausgabe geöffnet Wird von Write oder Writeln für eine Textdatei gemeldet, wenn keine Konsolenanwendung generiert wird.
106 Ungültiges numerisches Format Wird von Read oder Readln gemeldet, wenn ein numerischer Wert aus einer Textdatei nicht im richtigen numerischen Format vorliegt.


Gruß
Klabautermann
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Di 03.12.02 11:26 
Cool, danke.

Von euch kann man ja richtig was lernen. Werd mich jetzt mal näher mit Dateihandling beschäftigen. Wenn ich das dann einigermaßen drauf hab fange ich mit datenbanken an. Also ihr könnt sicher sein dass bald noch mehr Fragen von mir kommen. :wink:

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 03.12.02 12:05 
Hallo,
Andi1982 hat folgendes geschrieben:
Also ihr könnt sicher sein dass bald noch mehr Fragen von mir kommen. :wink:

kein Problem. Wir unterstützen immer gerne, wenn jemand was lernen möchte. Das macht mehr Spass als "nur" fertige Lösungen zu liefern ;).

Gruß
Klabautermann