HALT oder nicht HALT

04/04/2009 - 04:26 von Jürgen Lerch | Report spam
Saluton!

Mein FreePascal-Programm, welches einmal auf AMIGA, Linux und
Windows laufen soll, hat folgende Struktur:

PROGRAM Yarl;

PROCEDURE Init;
PROCEDURE ReadArgs;
.
.
.
IF Kommandozeilenparameter = Aufrufhilfe THEN BEGIN
WriteLn("YARL <wasauchimmer>");
HALT;
END; {IF}
.
.
.
END; {ReadArgs}
.
.
.
BEGIN {Init}
ReadArgs;
TimerSeed;
IOInit; {hier wird systemabhàngig die Bildschirm-IO
initialisiert - OS-Funktionen auf dem AMIGA,
sonst derzeit die GRAPH-Unit}
.
.
.
END; {Init}

BEGIN
TRY
Init;
.
.
.
FINALLY
.
.
.
END.

Auf dem AMIGA, mit FreePascal 1.10 funktioniert es auch so,
wie erhofft: Normalerweise öffnet es seinen Bildschirm und
macht, was es im Moment so tun soll; wenn ich es mit den
Parametern für die Aufrufhilfe starte (z.B. ,,yarl -h'',
gibt es diese Hilfe auf der Kommandozeile aus und beendet
sich.

Unter Linux (derzeit Debian Etch/FreePascal 2.0.0) benutze
ich im Moment die GRAPH-Unit (die leider die svgalib und
damit Root-Rechte benötigt, aber das ist ein anderes,
leidiges Thema). Wenn ich dort die Aufrufhilfe haben will,
öffnet es eine virtuelle Konsole für GRAPH und gibt den
Hilfetext dort aus, obwohl es wegen des HALTs in ReadArgs
doch eigentlich gar nicht bis IOInit, wo solches angeleiert
wird, kommen sollte. Was ist hier los? Was hab' ich wieder
im Handbuch übersehen?

(Unter Windows hab ich's noch nicht getestet.)

Ad Astra!
JuL

jynwyn@gmx.de / L'état, c'est toi. (Moi)
Jürgen ,,JuL'' Lerch /
 

Lesen sie die antworten

#1 Sieghard Schicktanz
04/04/2009 - 21:28 | Warnen spam
Hallo Jürgen,

Du schriebst am 04 Apr 2009 03:26:26 +0100:

Mein FreePascal-Programm, welches einmal auf AMIGA, Linux und
Windows laufen soll, hat folgende Struktur:


...
Unter Linux (derzeit Debian Etch/FreePascal 2.0.0) benutze
ich im Moment die GRAPH-Unit (die leider die svgalib und



Konsole oder X? Wenn X, dann solltest Du besser über andere Möglichkeiten
nachdenken - svgalib ist doch (AFAIK) schon jahrelang aufgegeben.
SDL könntest Du auch von der Konsole benutzen, andere Möglichkeiten sind
aber auch noch vorhanden.
Und wenn Du evtl. keine eigene Grafikausgabe machtest, brauchtest Du unter
Linux sowieso keine Grafik-Bibliothek, dafür reichte dann schon ein xterm
o.à. unter X.

damit Root-Rechte benötigt, aber das ist ein anderes,



Das ist eine deutliche Kontraindikation.

leidiges Thema). Wenn ich dort die Aufrufhilfe haben will,
öffnet es eine virtuelle Konsole für GRAPH und gibt den
Hilfetext dort aus, obwohl es wegen des HALTs in ReadArgs
doch eigentlich gar nicht bis IOInit, wo solches angeleiert



Wieso? Um _überhaupt_ was auszugeben, muß doch schließlich eine Konsole da
sein, wenn - wohl unter X - noch keine offen sein sollte, dann muß für die
Ausgabe eben eine aufgemacht werden. Dafür dürfte wohl schon das Runtime-
System sorgen, ohne daß Du Dich drum kümmern mußt (und das evtl. abschalten
kannst).
Möglicherweise wird die Konsole aber sogar schon bei der Initialisierung
des Runtime-System aufgemacht, damit das ggfs. allfàllige Fehlermeldungen
anzeigen kann, d.h. noch weit bevor Dein Programm überhaupt angesprochen
wird.

(Unter Windows hab ich's noch nicht getestet.)



Da wird das ggfs. auch nicht anders sein - unter Windows hast Du _nur_ die
graphische Ausgabe oder einen Fehler. Stdio unter Windows verlangt eine
Konsolenemulation, um überhaupt funktionieren zu können.

(Weitergabe von Adressdaten, Telefonnummern u.à. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder àhnlichem)
Mit freundlichen Grüßen, S. Schicktanz

Ähnliche fragen