Ich habe einen Knoten im Hirn.
Ich habe hier Code für eine MRU Liste geschrieben, also eine Liste mit den zu letzt geöffneten Dateien. So weit so gut, geht auch alles. Nur würde ich sie gerne bergrenzen auf eine bestimmte Anzahl von Dateien. Also wenn es 5 Stück sind dass er dann die von vorne anfängt die Einträge zu ersetzen.
Aber ich bekomme es ums verrecken nicht gebacken. Hier mal mein Code:
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 then
begin
KeyNumber := MAXFILES-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;
Aber irgendwie macht er nicht das was ich will. Habe ich vier voll, setzt er den fünften an die erste Stelle, aber den nächsten dann nicht an die zweite sondern ans Ende.