Autor Beitrag
Roy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

Windows7 Ultimate
Delphi 2007, NET, Embarcadero
BeitragVerfasst: Fr 19.09.14 20:15 
Hallo zusammen,

Benutze Delphi7
OS Windows7

Mein kleines Programm soll installiertes Betriebssystem auslesen. Soweit gut, haben auch den Quellcode zum Anzeigen der Version in Bild soweit hinbekommen. Beim compliieren und auch beim Testen wenn Delphi7 läuft zeigt er mir auch alles an. Starte ich mein Programm eigenständig kommt Fehler: unbekannte Bilddateierweiterung (..)

// Mein Quellcode//
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
unit slyder;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Jpeg, ExtCtrls, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Image4: TImage;
    Image5: TImage;
    Animate1: TAnimate;
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;
    Image1: TImage;
    Panel2: TPanel;
    Image2: TImage;
    Image3: TImage;
    Label3: TLabel;
    Panel3: TPanel;
    Image6: TImage;
    Image7: TImage;
    Label4: TLabel;
    Image8: TImage;
    Timer2: TTimer;
    procedure FormShow(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image7Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//Menue links halten//
procedure TForm1.FormShow(Sender: TObject);
begin
   Left := Screen.WorkAreaWidth - Width;

end;

//Programm beenden//
procedure TForm1.Image5Click(Sender: TObject);
begin
close;
end;


//Systemerkennung starten//
procedure TForm1.Label1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
Animate1.Active:=true;
Label1.Visible:=false;
Label2.Visible:=true;
Panel2.Visible:=true;
Label4.Visible:=true;
end;

//Systemerkennung beenden//
procedure TForm1.Label2Click(Sender: TObject);
begin
Animate1.Active:=false;
Label1.Visible:=true;
Label2.Visible:=false;
Panel2.Visible:=false;
end;


//Panel schließen//
procedure TForm1.Image3Click(Sender: TObject);
begin
Panel2.Visible:=false;
end;


//TForm verschieben//
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 ReleaseCapture;
 Perform(WM_SYSCOMMAND, $F0120);
end;

//Panel schließen//
procedure TForm1.Image7Click(Sender: TObject);
begin
Panel3.Visible:=false;
end;


//Windowsversion//
function GetWinVersion: String;  
begin  
  Result := 'Unbekannte Version';  
  case Win32Platform of  
    1:  
      if Win32MajorVersion = 4 then
      begin  
        case Win32MajorVersion of  
          0
            Result := 'C:\Marwildeapps\Treiberapp\versionen\win95.bmp'//Dieses Bild wird geladen wenn das Betriebssystem Windows 95 ist
         
          10
            Result := 'C:\Marwildeapps\Treiberapp\versionen\win98.bmp'//Hier Dateinamen einsetzen für Win98
          90
            Result := 'C:\Marwildeapps\Treiberapp\versionen\me.bmp'//Sollte klar sein was hier jetzt rein muss ;#)
        end;  
      end;  
    2:  
      case Win32MajorVersion of  
        3:
          if Win32MinorVersion = 51 then  
            Result := 'C:\Marwildeapps\Treiberapp\versionen\windowsnt .bmp'//...

        4:
          if Win32MinorVersion = 0 then  
            Result := 'C:\Marwildeapps\Treiberapp\versionen\nt4.bmp'//...
        5:
          case Win32MinorVersion of  
            0
              Result := 'C:\Marwildeapps\Treiberapp\versionen\2000.bmp'//...
            1
              Result := 'C:\Marwildeapps\Treiberapp\versionen\win7.bmp'//...
            
            2:
              Result := 'C:\Marwildeapps\Treiberapp\versionen\netserver.bmp'//...

            3:
               Result := 'C:\Marwildeapps\Treiberapp\versionen\vista.bmp';

             4:
               Result  := 'C:\Marwildeapps\Treiberapp\versionen\xp.bmp';  
          end;
     end;
  end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image8.Picture.LoadFromFile(GetWinVersion);
end;

//Version Text//
function GetWinVersion1: string;
begin
  result:='Unbekannte Version';
  case Win32Platform of
    1:// 9x-Reihe
      If Win32MajorVersion=4 Then Begin
        Case Win32MinorVersion of
            0: result:='Windows 95';
            10: result:='Windows 98';
            90: result:='Windows Me';
        end;
      end;
  2// NT-Reihe
     Case Win32MajorVersion of
         3:IF Win32MinorVersion=51 then
              result:='Windows NT 3.51';
         4:If Win32MinorVersion=0 then
             result:='Windows NT 4';
         5:Case Win32MinorVersion of
              0: result:='Windows 2000';
              1: result:='Windows 7';
              2: result:='Windows .NET Server';
              3: result:='Windows VISTA';
              4: result:='Windows XP';
           end;
     End;
  end;
  //Win32CSDVersion enthält Informationen zu Servicepacks
  if Win32CSDVersion<>'' then
    result:=result+' '+Win32CSDVersion;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Label4.Caption:= 'Ihr OS: ' + GetWinVersion1;
end;

end.


Bitte um Hilfe

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Mi 24.09.14 15:12 
Deine Funktion soll den Namen der Grafikdatei zurückgeben, der zur installierten Windowsversion passt.
Besser den Funktionsnamen ändern, das die eigentliche Funktion ersichtlich ist.

Die Grafiken liegen alle in einem gemeinsamen Verzeichnis, den kompletten Pfad braucht die Funktion nicht zu kennen.
Der wird entweder relativ aus dem dem Installationspfad abgeleitet oder aus einer Voreinstellung gelesen.
Notfalls einfach eine globale Konstante.

Wenn keine passende Grafik ermittelt werden kann, nicht irgendeinen Text zurückgeben, auf den nicht getestet wird!

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
const
  GImagePath = 'C:\Marwildeapps\Treiberapp\versionen\';

function GetWinVersionGrafikName: string;
begin  
  Result := '';  
  case Win32Platform of  
    1:  
      if Win32MajorVersion = 4 then
      begin  
        case Win32MinorVersion of  
          0
            Result := 'win95.bmp'//Dieses Bild wird geladen wenn das Betriebssystem Windows 95 ist
         
          10
            Result := 'win98.bmp'//Hier Dateinamen einsetzen für Win980,,,,,,,,,,,,,,,,,
          90
            Result := 'me.bmp'//Sollte klar sein was hier jetzt rein muss ;#)
        end;  
      end;  
    2:  
      case Win32MajorVersion of  
        3:
          if Win32MinorVersion = 51 then  
            Result := 'windowsnt.bmp'//...

        4:
          if Win32MinorVersion = 0 then  
            Result := 'nt4.bmp'//...
        5:
          case Win32MinorVersion of  
            0
              Result := '2000.bmp'//...
            1
              Result := 'win7.bmp'//...
            
            2:
              Result := 'netserver.bmp'//...

            3:
               Result := 'vista.bmp';

             4:
               Result  := 'xp.bmp';  
          end;
     end;
  end;
end;


Entweder eine Exception auslösen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function CheckWinVersionGrafikName(const AFilename: string): string;
begin
  if AFilename = '' then
    raise Exception.CreateFmt('Grafik für Windowsversion %d.%d konnte nicht ermittelt werden',
                              [Win32Platform.Win32MajorVersion,
                               Win32Platform.Win32MinorVersion]);
  Result := AFilename;
end;

Image8.Picture.LoadFromFile(GImagePath + CheckWinVersionGrafikName(GetWinVersionGrafikName));


Oder einen leeren String zurückgeben und darauf reagieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure SetWinVersionPicture(APicture: TPicture);
begin
  sFilename := GetWinVersionGrafikName;
  if sFilename = '' then
    APicture.Assign(nil)
  else
    APicture.LoadFromFile(GImagePath + sFilename);
end;

SetWinVersionPicture(Image8.Picture);


Zuletzt bearbeitet von Blup am Do 25.09.14 13:02, insgesamt 1-mal bearbeitet
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 25.09.14 08:57 
Den Teil versteh ich nicht

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if Win32MajorVersion = 4 then
      begin  
        case Win32MajorVersion of  
          0
            Result := 'C:\Marwildeapps\Treiberapp\versionen\win95.bmp'//Dieses Bild wird geladen wenn das Betriebssystem Windows 95 ist
         
          10
            Result := 'C:\Marwildeapps\Treiberapp\versionen\win98.bmp'//Hier Dateinamen einsetzen für Win98
          90
            Result := 'C:\Marwildeapps\Treiberapp\versionen\me.bmp'//Sollte klar sein was hier jetzt rein muss ;#)
        end;  
      end;


Keiner der Fälle wird zutreffen, wenn du in den Case läufst, da Win32MajorVersion 4 ist...

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mo 29.09.14 03:40 
user profile iconZeitGeist87 hat folgendes geschrieben Zum zitierten Posting springen:
Den Teil versteh ich nicht

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if Win32MajorVersion = 4 then
      begin  
        case Win32MajorVersion of  
          0
            Result := 'C:\Marwildeapps\Treiberapp\versionen\win95.bmp'//Dieses Bild wird geladen wenn das Betriebssystem Windows 95 ist
         
          10
            Result := 'C:\Marwildeapps\Treiberapp\versionen\win98.bmp'//Hier Dateinamen einsetzen für Win98
          90
            Result := 'C:\Marwildeapps\Treiberapp\versionen\me.bmp'//Sollte klar sein was hier jetzt rein muss ;#)
        end;  
      end;


Keiner der Fälle wird zutreffen, wenn du in den Case läufst, da Win32MajorVersion 4 ist...

Dem Edit nach, wohl ein Tippfehler.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 29.09.14 13:30 
Ich weiß, ich wollte nur, dass er seinen Fehler selbst findet :lol:

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.