OK, ich habe jetzt folgende Variante mir gebaut:
Delphi-Quellcode:
var i, imain, isub, ibuild, iamain, iasub, iabuild: word;
ts: TStringList;
sa, s: string;
begin
. . .
iamain := 0;
iasub := 0;
iabuild := 0;
sa := Format('%d.%d.%d',[iamain,iasub,iabuild]);
for i := 0 to High(Progs) do begin
if Progs[i].Version <> sa then begin
SplitString(Progs[i].Version, '.', ts);
if ts.Count = 3 then begin
imain := StrtoInt(ts.Strings[0]);
isub := StrtoInt(ts.Strings[1]);
ibuild := StrtoInt(ts.Strings[2]);
if imain >= iamain then begin
if isub >= iasub then begin
if ibuild > iabuild then begin
iamain := imain;
iasub := isub;
iabuild := ibuild;
sa := Format('%d.%d.%d',[iamain,iasub,iabuild]);
end;
end;
end;
end;
end;
end;
Die Versionen (im dyn. Array Progs unter Versionen) beinhalten nur die 3 Versionsinfos Haupt, Neben und Build. SplitString zerlegt den String einfach an Hand des Trennzeichens und fügt ihn in die StringList ein. In sa steht nach dem Durchlauf die neueste Version.
Seht ihr da noch ne Optimierungsmöglichkeit?