Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi auslesen der windowsversion (https://www.delphipraxis.net/18558-auslesen-der-windowsversion.html)

mirage228 21. Mär 2004 10:26

Re: auslesen der windowsversion
 
Ähm, die Deklaration sieht so aus

Delphi-Quellcode:
function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL; stdcall;
Ich weiss nicht, wie du auf den Pointer kommst, onlinehome...

@Luckie: Das mit den IFDEFs ist dazu da, bei den Leuten, bei denen diese Struktur noch nicht definiert ist, diese zu definieren (ältere Delphi-Version?)

mfG
mirage228

NicoDE 21. Mär 2004 10:41

Re: auslesen der windowsversion
 
Zitat:

Zitat von Luckie
könntest du mal die {$IFDEF}'s erklären

Delphi-Quellcode:
{$IFDEF CONDITIONALEXPRESSIONS}  // Wird $IF unterstützt?
  // (wenn nicht, dann kennt die Delphi-Version TOSVersionInfoEx
  //  wahrscheinlich nicht, im schlimmste Falle wird es in der
  //  Unit definiert und überschreibt die Windows.pas -Version)
  {$IF Defined(TOSVersionInfoEx)}  // TOSVersionInfoEx vorhanden?
    {$DEFINE TOSVERSIONINFOEX_DEFINED}  // merken :)
  {$IFEND}
{$ENDIF}
{$IFNDEF TOSVERSIONINFOEX_DEFINED}
Zitat:

Zitat von Luckie
was das soll und warum die erste Funktion

Der Übesichtlichkeit halber (versucht die bestmögliche Version von TOSVersionInfo zu holen).
GetOSVersionText kann sich jeder selbst schreiben. Wer die Struktur selbst auswerten will, braucht nur GetOSVersionInfo.

MathiasSimmack 21. Mär 2004 10:41

Re: auslesen der windowsversion
 
Aus dem Grund habe ich mir eine separate Unit (Windows_Fragment.pas) deklariert, die ich hinter der Original-Windows-Unit einbinde. Auf die Weise kann ich auch mein Delphi 5 aktuell halten, ohne in Borlands Units rumfummeln zu müssen. ;)

Zitat:

Zitat von NicoDE
Warum hat sich noch keiner über
Delphi-Quellcode:
          if(osvi.szCSDVersion[0] = 'C') or
            (osvi.szCSDVersion[0] = 'B') then Result := Result + 'OSR2 ';
beschwert?
(der szCSDVersion ist in dem Falle ' A ', ' B ', ... - man achte auf die Leerzeichen :))

Weil vermutlich keiner mehr mit Windows 95 arbeitet? Au weia. Ich sehe gerade, dass es im PSDK so aussieht:
Code:
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
  printf ("Microsoft Windows 95 ");
  if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )
    printf("OSR2 " );
}
:stupid:

NicoDE 21. Mär 2004 10:43

Re: auslesen der windowsversion
 
Zitat:

Zitat von MathiasSimmack
Ich sehe gerade, dass es im PSDK so aussieht:

Mag sein, aber die Beispiele waren noch nie fehlerfrei ;)
http://support.microsoft.com/support.../q158/2/38.asp
(mal ganz davon abgesehen, dass bei neuen Windows-Versionen komische Ergebnisse rauskommen wenn man das MSDN-Beispiel 1:1 übernimmt...)

MathiasSimmack 21. Mär 2004 10:55

Re: auslesen der windowsversion
 
Nein, in dem Fall dürfte das Problem wohl bei mir liegen. Das wollte ich damit sagen. Im PSDK steht eindeutig "[1]" drin, ich habe an gleicher Stelle nur dummerweise "[0]" benutzt. :(

Na ja, was neue Versionen angeht, das kann ich nicht beurteilen. Mein Vorschlag für künftige OS-Prüfungen:
Delphi-Quellcode:
procedure GetOSVersion;
begin
  MessageBox(0,'Schau auf deine Schachtel, dann weißt du es!',
    'Meldung',MB_OK or MB_ICONINFORMATION);
end;

begin
  GetOSVersion;
end;

NicoDE 21. Mär 2004 11:17

Re: auslesen der windowsversion
 
Zitat:

Zitat von MathiasSimmack
Nein, in dem Fall dürfte das Problem wohl bei mir liegen.

Kommt vor...
Ich meinte eigentlich
Code:
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == [color=red]0[/color])
{
  printf ("Microsoft Windows 95 ");
  if ( osvi.szCSDVersion[1] == [color=red]'C'[/color] || osvi.szCSDVersion[1] == 'B' )
    printf("OSR2 " );
}
...es gibt kein 95C mit Minor 0 (auch das PSDK irrt sich manchmal (wollte ich damit sagen))

glkgereon 23. Mär 2004 19:05

Re: auslesen der windowsversion
 
naja, das is ungefähr so intelligent, wie ein vorschlag aus der schule für eine funktion:
man nehme eine prozedur, schreibe den return-wert aufn bildschirm und frage dann den nutzer, was denn da bitte steht.... :)
in delphi gibts doch (fast) alles, es muss doch irgendwo versteckt was geben, so in der art

var
version:string;

begin
version:=getwinversion(computername);
end.

oder so ähnlich.
da sollte man borland ma ne mail schicken.....

Christian Seehase 23. Mär 2004 19:40

Re: auslesen der windowsversion
 
Moin glkbkk,

Zitat:

Zitat von glkbkk
oder so ähnlich.
da sollte man borland ma ne mail schicken.....

oder selber so eine Funktion schreiben, wenn man sie denn braucht ;-)

Luckie 23. Mär 2004 20:11

Re: auslesen der windowsversion
 
Zitat:

Zitat von glkbkk
oder so ähnlich.
da sollte man borland ma ne mail schicken.....

Du bist es doch der programmiert. Borland stellt nur die Werkzeuge zur Verfügung. :roll: Wenn du so willst, könnte Borland für jedes Prtogramm eine Komponenete bei legen.

DaFox 23. Mär 2004 23:15

Re: auslesen der windowsversion
 
Hi,

@Mathias: Nun, da Du einen Fehler in Deinem Code gefunden hast, solltest Du ihn vielleicht in der Code-Library verbessern bzw. Nico sollte seine Version evtl. dazuposten, oder?

Gruß,
Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz