file-variable : null setzen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

file-variable : null setzen

Beitrag von malabarista »

Als anständiger Mensch wollte ich eine File-Variable bevor sie irgendwo im programm verwendet wird, vorsorglich auf Null setzen.
Aber das ist mir leider nicht gelungen.

Code: Alles auswählen

 
var f:file;
 
begin
f:=nil;
f:=null;
end;
 

Beide Varianten führen zu einem compile-error.
Wie mache ich es richtig ?
Oder macht man damit garnichts ?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: file-variable : null setzen

Beitrag von m.fuchs »

Auf nil setzen geht nicht bei solchen Typen, null gibt es unter Pascal gar nicht.
Was du machen könntest wäre

Code: Alles auswählen

AssignFile(f, '');

Die Frage ist nur warum?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: file-variable : null setzen

Beitrag von malabarista »

Meine Auffassung ist, dass man Variablen immer initialiseren sollte.

Aber ich kann es in diesem Fall auch lassen...

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: file-variable : null setzen

Beitrag von m.fuchs »

malabarista hat geschrieben:Meine Auffassung ist, dass man Variablen immer initialiseren sollte.

Das sollte man. Aber initialisieren ist nicht das Gleiche wie eine Variable auf einen Nullwert zu setzen. Kannst du nicht am Anfang deiner Methode schon gleich das richtige Assign durchführen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: file-variable : null setzen

Beitrag von malabarista »

Es handelt sich um mehrere globale Variablen, die vorsorglich am Anfang initialisiert werden.
Aber ich kann dies auch lassen, - es ist keine zwingende Notwendigkeit. Denn wie die zugehörige Datei heisst, wird erst später im Programm entschieden (es handelt sich um Jahresdateien).

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: file-variable : null setzen

Beitrag von m.fuchs »

malabarista hat geschrieben:Es handelt sich um mehrere globale Variablen, die vorsorglich am Anfang initialisiert werden.

Also bevor ich mir die Mühe mache globale Variablen zu initialisieren, versuche ich eher diese loszuwerden. Meist gibt es keinen Grund für globale Variablen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Warf
Beiträge: 1911
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: file-variable : null setzen

Beitrag von Warf »

Ein kleiner Tipp am Rande, nutz lieber die Klasse TFileStream, das ist ein schöner OOP Wrapper um die File Operationen, und ist deutlich übersichtlicher und Intuitiver.

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: file-variable : null setzen

Beitrag von Jole »

m.fuchs hat geschrieben:Was du machen könntest wäre
AssignFile(f, '');

Damit wird der Variablen f die Standard Ausgabeeinheit zu geordnet (Kompatibilität zu TP7 voraus gesetzt).
Soweit ich mich erinnern kann, wird f keine Dateinummer zugeordnet, sondern ein Rekord der Informationen zur Datei enthält (u.a. auch die Dateinummer). Da etwas selber initialisieren zu wollen macht, zumindest aus meiner Sicht, irgendwie keinen Sinn.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: file-variable : null setzen

Beitrag von m.fuchs »

Jole hat geschrieben:Damit wird der Variablen f die Standard Ausgabeeinheit zu geordnet (Kompatibilität zu TP7 voraus gesetzt).
Soweit ich mich erinnern kann, wird f keine Dateinummer zugeordnet, sondern ein Rekord der Informationen zur Datei enthält (u.a. auch die Dateinummer).
Da etwas selber initialisieren zu wollen macht, zumindest aus meiner Sicht, irgendwie keinen Sinn.

Es bewahrt einen vor Fehlermeldungen, dass die Variable noch keiner Datei zugewiesen wurde. Inwiefern das sinnvoll ist,...
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: file-variable : null setzen

Beitrag von Jole »

m.fuchs hat geschrieben:Es bewahrt einen vor Fehlermeldungen, dass die Variable noch keiner Datei zugewiesen wurde. Inwiefern das sinnvoll ist,...

Die Fehlermeldung kann er damit vermeiden. Wenn er aber versehentlich Daten dahin schickt, dann sucht der sich nen Wolf um die wieder zu finden. :mrgreen:

Antworten