Für alle die es noch interessiert:
Delphi-Quellcode:
procedure TForm1.AddLastFileToList(Filename: String);
var
ini: TInifile;
slKeyNumbers: TStringList;
KeyNumber, LastKeyWritten: Integer;
begin
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '\mru.ini');
try
slKeyNumbers := TStringList.Create;
try
ini.ReadSectionValues('MRU', slKeyNumbers);
KeyNumber := slKeyNumbers.Count;
LastKeyWritten := ini.ReadInteger('LKW', 'LastKeyWritten', 0);
if (KeyNumber = MAXFILES) and (LastKeyWritten = MAXFILES-1) then
begin
KeyNumber := 0;
ini.WriteString('MRU', IntToStr(KeyNumber), Filename);
end;
if (KeyNumber = MAXFILES) and (LastKeyWritten < MAXFILES-1) then
begin
KeyNumber := LastKeyWritten+1;
ini.WriteString('MRU', IntToStr(KeyNumber), Filename);
end;
ini.WriteString('MRU', IntToStr(KeyNumber), Filename);
ini.WriteInteger('LKW', 'LastKeyWritten', KeyNumber);
finally
slKeyNumbers.Free;
end;
finally
ini.Free;
end;
end;
So geht's. Ich war eben nur immer darauf versessen gewesen und wollte es mit einer if-Anweisung lösen und hatte dabei aus dem Blick verloren, dass man doch zwei braucht.
Aber nichts desto trotz: Wer den Code vereinfachen kann, soll sich keinen Zwang antun.