FlatPress: Mein Kategorie-ID-Generator

In FlatPress kann ein Beitrag gleichzeitig mehreren Kategorien zugeordnet sein, dieser hier z. B. "Web" und "Pascal". Die Zuordnungen werden am Beitrag als Ganzzahlen abgespeichert. Somit bleiben die Zuordnungen erhalten, falls man den Namen einer Kategorie ändern sollte.

Rein intuitiv würde man nun beim Anlegen der ersten Kategorien die IDs bei 1 beginnend aufsteigend vergeben. Möchte man später jedoch eine weitere Kategorie zwischen den anderen einfügen, ist da einfach keine Zahl mehr frei.

Schlaue Leute und/oder solche, die schon mal das Wort "Aktenplan" gehört haben, werden das natürlich am Anfang bedacht haben und entsprechend Lücken zwischen den IDs gelassen haben. (siehe z. B. hier) Aber wenn man nun die Reihenfolge, in der die Kategorien angezeigt werden sollen, ändert, dann sind die IDs in der Kategorienverwaltung nicht mehr aufsteigend sortiert. Ist doch hässlich, oder?

Wieso sich also nicht den ganzen "Ärger" ersparen und die IDs "chaotisch" vergeben?

Das dachte ich mir ebenfalls, habe Turbo Pascal 5.5 rausgekramt und in 5 Minuten einen simplen ID-Generator geschrieben. Wegen Turbo Pascal braucht's ein DOS-kompatibles Betriebssystem für die Ausführung, z. B. Windows 98 oder Windows 7 in der x86-Variante (also 32-Bit). Eine DOSBox oder DOSBox-X tut's aber sicherlich auch. Möglicherweise lässt sich der Quellcode auch mit Free Pascal in ein Win32-Programm kompilieren, dass dann auch unter einem x64-Windows läuft.

Die vom Generator erzeugten IDs liegen zwischen 100 und 999, was wohl für die meisten Blogs ausreichend sein dürfte.

Die Sache hat allerdings einen Haken, denn die Anforderung von FlatPress ist, dass die Kategorie-IDs logischerweise eindeutig sein müssen. Eine derartige Prüfung bietet der Generator (in seiner jetzigen rudimentären Form) nicht an. Ihr müsst die Prüfung daher selbst durchführen und bei möglichen Dopplungen eine neue ID erzeugen lassen.

program
  CategoryIdGenerator;

const
  LOWER_LIMIT = 100;
  UPPER_LIMIT = 999;

var
  catId : Word;

begin
  Randomize;
  catId := Random(UPPER_LIMIT - LOWER_LIMIT) + LOWER_LIMIT;
  WriteLn('category id: ', catId);
end.

Update 21.04.2022: In FlatPress: Kategorie-ID-Generator 2.0 stelle ich eine stark verbesserte Version vor.