On Wed, Jan 22, 2003 at 04:14:41PM +0100, Frank Heckenbach wrote:
kann mir mal jemand erklären, wie Dateien in Standard Pascal funktionieren? Sowas wie Assign oder Bind gibt es da ja nicht. Wie orndet man einer Datei also einen Namen zu?
Leider gibt "Classic Pascal" (also ISO 7185, im Gegensatz zu Extended Pascal) dazu keinen Mechanismus. Das Einzige, was man tun kann, ist die Datei im Programm-Header zu deklarieren und sie damit als extern zu kennzeichnen, z.B.:
program Foo (Bar);
var Bar: Text;
begin Rewrite (Bar); WriteLn (Bar, 'bar') end.
Wie der Dateiname zustandekommt, ist allerdings compilerahängig.
Ach deshalb fehlt die Angabe überall.
GPC bietet dazu 3 Möglichkeiten:
- Per Default wird der Benutzer zur Laufzeit nach einem Dateinamen gefragt.
Sehr gut! ...und wenn man nur Enter drückt, nimmt er die Standard-Eingabe - auch sehr gut!
Wie wäre es, zusätzlich mit einer Compiler-Option die Möglichkeit zu schaffen, dass die Programm-Optionen als Dateinamen interpretiert und der Reihe nach zugeordnet werden. Das würde ich als optimal empfinden. ...nur ein Vorschlag, nichts, was mir wirklich wichtig wäre.
Ich habe ein wenig damit rumexperimentiert. Also FPC macht bei dem Programm nur einen Laufzeitfehler. :-(
Bei Standard Pascal Programmen habe ich öfter gesehen, dass "input, output" angegeben waren. Wird das in dem Standard vorausgesetzt, oder welchen Zweck hat das?
Besonders Interessant fand ich bei GPC folgendes Verhalten:
| program Foo (output, input, stderr, bar); | | var | Bar: Text; | | begin | Rewrite (Bar); | WriteLn (Bar, 'bar'); | Rewrite (output); | WriteLn (output, 'output'); | Rewrite (stderr); | WriteLn (stderr, 'stderr'); | end.
Dabei fragte er wirklich nur nach einer Datei. :-) Das "stderr" ist aber bestimmt kein Standard, oder?
Nicht, dass ich mich jetzt nur noch auf Standards beschränken will. Aber ich möchte das verstehen, um halt möglichst portabel programmieren zu können; da, wo es möglich ist.