Hallo,
in einem alten Forum zu Turbo Pascal fand ich mal eine Abfrage von 2 Bytes eines "Statusvektors",
die anzeigten, ob die stdin und die stdout eines Programmes beim Aufruf umgeleitet waren oder nicht.
Geht das immer noch, wenn ja wie?
Kann festgestellt werden, ob die stdin umgeleitet wurde
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Kann festgestellt werden, ob die stdin umgeleitet wurde
Wäre hilfreich, wenn du die Lösung hier zumindest verlinken könntest. Dann könntest du sie direkt selbst ausprobieren und dein Ergebnis dazu schreiben.
Ansonsten gilt: Free Pascal bietet von Haus aus keine Möglichkeit. Das muss also betriebssystemabhängig selbst geschrieben werden.
Unter Linux geht das recht einfach: http://stackoverflow.com/questions/1188 ... iptor-in-c
Für Windows könnte man das vielleicht ähnlich machen: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Ansonsten gilt: Free Pascal bietet von Haus aus keine Möglichkeit. Das muss also betriebssystemabhängig selbst geschrieben werden.
Unter Linux geht das recht einfach: http://stackoverflow.com/questions/1188 ... iptor-in-c
Für Windows könnte man das vielleicht ähnlich machen: http://msdn.microsoft.com/en-us/library ... s.85).aspx
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Kann festgestellt werden, ob die stdin umgeleitet wurde
Hallo,
der Link und der Tip:
http://mitglied.multimania.de/johnplayer/pas.htm#FRAGE3
Ergebnisse habe ich keine, da schon der Compiler mault. Ich nutze die Free Pascal IDE 2.44
M.E. ist der Abfragewert nach dem <> auch ein bißchen unsauber, denn eigentlich sollten da Werte 00h oder ffh drinstehen,
aber egal, das kann man ja herausfinden.
Ich scheitere schon daran, daß ich den PrefixSeg nicht kenne. Das ebenfalls entfundene MEM habe ich schon mal gemacht, das sollte gehen.
der Link und der Tip:
http://mitglied.multimania.de/johnplayer/pas.htm#FRAGE3
Code: Alles auswählen
CONST STDOUT = 1; { Standardausgabegerät (Eingabegerät STDIN = 0) }
FUNCTION Umgeleitet:Boolean;
BEGIN
Umgeleitet := Mem[PrefixSeg:$18+STDOUT] <> STDOUT;
END;
M.E. ist der Abfragewert nach dem <> auch ein bißchen unsauber, denn eigentlich sollten da Werte 00h oder ffh drinstehen,
aber egal, das kann man ja herausfinden.
Ich scheitere schon daran, daß ich den PrefixSeg nicht kenne. Das ebenfalls entfundene MEM habe ich schon mal gemacht, das sollte gehen.
Zuletzt geändert von Lori am Do 14. Feb 2013, 19:17, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen
Grund: Bitte den Highlighter nutzen
Re: Kann festgestellt werden, ob die stdin umgeleitet wurde
Ich glaube, dass das nicht ganz so einfach wird. Dein Beispiel bezieht sich auf Turbo-Pscal (Anfang der 90er). Zum Thema habe ich gefunden:
http://lists.freepascal.org/lists/fpc-p ... 13536.html
http://community.freepascal.org:10000/b ... m_id=24084
Michl
http://lists.freepascal.org/lists/fpc-p ... 13536.html
http://community.freepascal.org:10000/b ... m_id=24084
Michl
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
- af0815
- Lazarusforum e. V.
- Beiträge: 6848
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Kann festgestellt werden, ob die stdin umgeleitet wurde
Info auf der Seite ganz unten: (letzte Änderung 03.04.1996)alfware17 hat geschrieben: http://mitglied.multimania.de/johnplayer/pas.htm#FRAGE3
Kurz gesagt: Es wird unter Win32 oder besser, diese Art des Zugriffs nicht mehr unterstützt. WO es noch gehen wird ist, wenn du einen alten Dosextender in einem Emulator zum laufen bekommst. Die Frage ist eher, benötigst du das wirklich, wenn ja zu welchen Zweck. Wenn der Zweck klar ist , ist evenzuell ein anderer Weg zu finden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).