Hi,
in Sachen "User-Agent:" soll optional sowohl die Compiler-Plattform (bei
uns 'DOS16') als auch die Plattform ausgegeben werden können, unter der
XP (bzw. der UUZ) aktuell läuft. Des weiteren soll angegeben werden
können, ob man die genaue Version ('WinXP', aber ohne genaue
Versionsnummer) oder nur die Versionsfamilie ('Win9x', 'WinNT')
ausgegeben haben will.
Nun hab ich mal versucht, aus 'writever()' und 'memstat' in xp5.pas
schlau zu werden (hab mich damit noch nie im Detail beschäftigt) und das
für meine Zwecke anzupassen. Vielleicht kann sich mal jemand den Code
unten ansehen und eine Einschätzung geben, ob das wohl so laufen würde.
Wenn am Ende ein Leerstring zurückkommt, soll es plain DOS sein (da
würde dann auch nichts zusätzlich ausgegeben werden, weil ich
'DOS16/DOS6' o.ä. etwas dämlich fände, IMO spielt die Version da auch
keine wesentliche Rolle).
Was mir noch nicht so ganz klar ist:
1. Was ist denn case WinVersion of 1? Windows 1.x/2.x?
2. Ich bin nicht sicher, ob die Reihenfolge in 'writever' eine Rolle
spielt. Muß die OS/2 => Linux => Win lauten? Oder ist
sichergestellt, daß 'WinVersion' wirklich immer 0 zurückgibt, wenn es
kein Windows ist?
DOSBOX kann ich im Moment noch nicht berücksichtigen, weil der Code in
meiner Arbeitsumgebung noch nicht drin ist. Here we go:
----------8<----------
os:='';
case WinVersion of { erstmal alle Windows-Versionen prüfen }
{ 1 : os:=??? }
2 : os:='Win3.x';
3 : if osfamily then
os:='Win9x'
else begin
if lo(TrueWinVersion)<5 then
os:='Win95'
else case lo(dosversion) of
7 : os:='Win98';
8 : os:='WinMe';
end;
end;
4 : if (lo(WinNTVersion)=0) or osfamily then { ohne XP_NTVDM.DLL }
os:='WinNT'
else begin
if lo(WinNTVersion) in [5,6] then { mit XP_NTVDM.DLL }
begin
if hi(WinNTVersion)=0 then
os:='Win2K'
else
os:='WinXP';
end
else os:='WinNT';
end;
else begin
if lo(dosversion)>=10 then
os:='OS2'
else if DOSEmuVersion<>'' then
os:='Linux[DOSEMU]'
end;
end; { case }
if os<>'' then
ua:=ua+iifs(hascompos,'/',iifs(hasbracket,'; (',' ('))+os;
----------8<----------
Michael
------------------------------------------------------------------------
FreeXP Entwickler-Mailingliste
[email protected]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list