Zitat von
MagicAndre1981:
TWindowsVersionsInfo - Kompo zur Windowserkennung
Da mehrfach danach gefragt wurde hab ich mal die Windowserkennng in eine Klasse gepackt, die per Direktive auch als VLC-Kompo auf die Form geklatscht werden kann.
Hallo,
Die TWindowsVersionsInfo finde ich gut. Ich habe sie in einem kleinen Testprogramm benötigt.
Bei der Benutzung sind mir aber ein paar Kleinigkeiten aufgefallen:
- Ich finde es immer besser einen Fehler zu vermeiden als auf ihn reagieren zu müssen.
Wenn Du einen EConvertError erwartest weil sp[1] = '', warum prüfst Du denn nicht vorher auf einen korrekten Wert?
Besser noch Du schaust Dir an wie IntToStr funktioniert und verwendest Val.
Ich hätte es wahrscheinlich ja gar nicht bemerkt, aber der Delphi Debugger bleibt natürlich immer bei einer Exception stehen. ( -> sehr nervig und unnötig)
Delphi-Quellcode:
...
// Deine Funktion
function GetRevisionFromBuildLabEx(): DWORD;
var
sp : TStrSplitter;
begin
sp := TStrSplitter.Create;
try
try
sp.Execute(BuildLabEx,'.');
Result := StrToInt( sp[1] );
except on E: EConvertError do
Result := MAXDWORD;
end;
finally
FreeAndNil(sp);
end;
end;
...
// Mein Vorschlag
function GetRevisionFromBuildLabEx(): DWORD;
var
sp : TStrSplitter;
E: Integer;
begin
sp := TStrSplitter.Create;
try
sp.Execute(BuildLabEx,'.');
Val(sp[1], Result, E);
if E <> 0 then Result := MAXDWORD;
finally
FreeAndNil(sp);
end;
end;
...
[edit]
Ups, ich sehe gerade, dass dieses Problem schon jemand anderes gepostet hat. (Ich hätte nicht nur den 1. Beitrag lesen sollen). Trotzdem ist mein Vortschlag besser als das if str = '' then ...
[/edit]
nonVCL
Du bietest die Option an mit dem Schalter {.$define USE_VCL} nur ein TObjekt statt einer Komponente zu benutzen.
Die Idee ist super, Du benötigst dann kein Classes und kein Controls und bist damit quasi nonVCL.
Delphi-Quellcode:
uses
SysUtils,
{$IFDEF USE_VCL}
Classes, Controls,
{$ENDIF}
Windows ;
Aber Du bist nicht konsequent. Du verwendest die Unit cruStrSplitter, die natürlich Classes einbindet.
Damit hast Du dann wieder die ganze VCL eingebunden.
Lösungsvorschlag:
Nenne Deinen Kompilerschalter einfach um in USE_TCOMPONENT.
Dann kann sich niemand beschweren.
oder besser:
Überarbeite die cruStrSplitter, das diese auch nonVCL wird. Die kleinen *.exe Dateien werden es Dir danken
Ich hoffe diese Infos helfen Dir dein Projekt noch besser zu machen.