Autor |
Beitrag |
Roy
Beiträge: 184
Windows7 Ultimate
Delphi 2007, NET, Embarcadero
|
Verfasst: 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//
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 public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject); begin Left := Screen.WorkAreaWidth - Width;
end;
procedure TForm1.Image5Click(Sender: TObject); begin close; end;
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;
procedure TForm1.Label2Click(Sender: TObject); begin Animate1.Active:=false; Label1.Visible:=true; Label2.Visible:=false; Panel2.Visible:=false; end;
procedure TForm1.Image3Click(Sender: TObject); begin Panel2.Visible:=false; end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Perform(WM_SYSCOMMAND, $F012, 0); end;
procedure TForm1.Image7Click(Sender: TObject); begin Panel3.Visible:=false; end;
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'; 10: Result := 'C:\Marwildeapps\Treiberapp\versionen\win98.bmp'; 90: Result := 'C:\Marwildeapps\Treiberapp\versionen\me.bmp'; 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;
function GetWinVersion1: string; begin result:='Unbekannte Version'; case Win32Platform of 1: If Win32MajorVersion=4 Then Begin Case Win32MinorVersion of 0: result:='Windows 95'; 10: result:='Windows 98'; 90: result:='Windows Me'; end; end; 2: 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; 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 Narses: Delphi-Tags hinzugefügt
|
|
Blup
Beiträge: 173
Erhaltene Danke: 43
|
Verfasst: 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!
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'; 10: Result := 'win98.bmp'; 90: Result := 'me.bmp'; 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:
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:
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
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 25.09.14 08:57
Den Teil versteh ich nicht
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'; 10: Result := 'C:\Marwildeapps\Treiberapp\versionen\win98.bmp'; 90: Result := 'C:\Marwildeapps\Treiberapp\versionen\me.bmp'; 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
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mo 29.09.14 03:40
|
|
ZeitGeist87
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 29.09.14 13:30
Ich weiß, ich wollte nur, dass er seinen Fehler selbst findet
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
|