Ich habe folgene Konstruktion:
Delphi-Quellcode:
if (ReadInteger('Version', 'Major', 0) > Major) then
Avaiable
else if (ReadInteger('Version', 'Minor', 0) > Minor) then
Avaiable
else if (ReadInteger('Version', 'Release', 0) > Release) then
Avaiable
else if (ReadInteger('Version', 'Build', 0) > Build) then
Avaiable;
Meine Frage an euch: Was würdet ihr sagen:
Wenn ich Version in der Ini-Datei "1.5.2.1" ist, und die andere Version (die Variablen) "1.5.1.0".
Sollte er ein "Avaible" ausführen?
Meinermeinung nach im Vergleich der "Releases" oder nicht?
Aber Delphi (im Debugmodus) springt vom 1. Vergleich an das Ende der Vergleiche => keine Meldung => Bug ?!
Oder ich unterschätze die Wirkungsweise des "else-ifs"?
PS: Hier der Kontext:
Delphi-Quellcode:
procedure TfrmUpdate.Button1Click(Sender: TObject);
procedure Avaiable;
begin
MessageBox(
Handle, PChar('
A new version is avaiable'), PChar('
Update possible'), MB_OK
or MB_ICONINFORMATION);
end;
var
fs : TFileStream;
Major, Minor, Release, Build: Integer;
ini : TIniFile;
begin
fs := TFileStream.Create(ExtractFilePath(ParamStr(0)) + '
info.ini', fmCreate);
try
ihDownload.Get(infoUrl, fs);
finally
FreeAndNil(fs);
end;
GetVersion(ParamStr(0), Major, Minor, Release, Build);
with TIniFile(ExtractFilePath(ParamStr(0)) + '
info.ini')
do
try
// START VON OBEN
if (ReadInteger('
Version', '
Major', 0) > Major)
then
Avaiable
else if (ReadInteger('
Version', '
Minor', 0) > Minor)
then
Avaiable
else if (ReadInteger('
Version', '
Release', 0) > Release)
then
Avaiable
else if (ReadInteger('
Version', '
Build', 0) > Build)
then
Avaiable;
// ENDE VON OBEN
finally
Free;
end;
end;