Also, die Überschrift dieses Threads trifft den Nagel auf den Kopf. Obwohl ich mit Programmieren angefangen habe (1966), als die meisten der Leser und Schreiber dieses Forums noch lange irgendwo im Käseregal gelegen haben, bin ich eigentlich noch Lazarus-Neuling (mit Ausnahme eines kurzen Intermezzos ca. 2002.) Der Grund, dass ich mich überhaupt hierher begeben musste, ist, dass weder mein bevorzugtes Delphi 5.5 (!) noch ein neueres von Embarcadero mit .tif-Bildern umgehen konnten.
Letzteres funktioniert mit Lazarus sehr gut - eine Funktion zur Rückkodierung von .bmp nach .tif wäre das Nonplusultra, aber nicht lebensnotwendig. Auch das Auswählen, Einlesen und Laden von Bilddateien geht problemlos. Nur wenn im Filenamen ein Umlaut auftaucht, ist Ende Gelände. Inzwischen kenne ich mich bestens aus, was UTF-x, Unicode, die CPs 1252, 8859-1 und -15 und ein CodePoint sind. An und für sich wäre es ja ein Klacks, z.B. den total vermurksten Filenamen "1091-Z'#$FC'rich.tif" wieder zu korrigieren, so dass Windows das File auch findet, aber die Codierung ist so vernagelt, dass man mit Bordmitteln (Stringoperationen) gegen eine Granitwand läuft. Alles deutet darauf hin, dass das "Vernageln" in dem Moment passiert, in dem der richtige Filename nach seiner Nummer identifiziert, aus der Stringliste in einen Eizelstring zum Laden übernommen wird, denn die Stringliste mit den verfügbaren Files bleibt auch nach LoadFromFile und sogar nach SaveToFile unverändert.
Ich habe den Eindruck, dass aus lauter blinder Unicode- und UTF-8-Begeísterung, die ja in einem entsprechenden Problemfeld nicht unberechtigt sein mögen, die Fileoperationen vergessen worden sind, die natürlich nicht mehr funktionieren können, wenn unnötigerweise an der System-Codepage herumgemurkst wird. Ich hatte gehofft, dass der Typ TFilename dagegen immun ist, was ja naheliegend wäre, aber das ist nur ein anderer Name für einen stinknormalen String. Inzwischen scheint sogar Windows selbst in UTF-8 herumzumurksen, denn einige meiner Uralt-Delphi-5.5-Programme (z.B. für BackUps und Filelisten) kommen ebenfalls ins Husten, wenn Umlaute auftreten. Das ist auch kein Wunder, denn Windows wird ja regelmäßig up-gedated (verschlimmbessert) und das alte Delphi benutzt viele Windows-API-Funktionen.
Ein Byte-Array habe ich noch nicht versucht. Klingt erst einmal nicht schlecht, aber angesichts des totalen Chaos von nicht funktionierenden Lösungsvorschlägen *), auch wegen des unübersichtlichen Versions-Wirrwars, war mir bisher der Aufwand zu schade. Ausserdem ist mir noch ein Rätsel, wie man überhaupt von einem korrekten Byte-Array wieder zu einem funktionierenden Filenamen kommen soll, denn es ist zu befürchten, dass schon beim Typecast der große Murkser wieder zuschlägt.
Inzwischen habe ich die Suche nach einer Lösung aus lauter Verzweiflung aufgegeben und schreibe jetzt in der Fileliste "Zuerich" - furchtbar !
*) z.B. -dDisableUTF8RTL gem.
https://wiki.freepascal.org/Lazarus_wit ... UTF-8_mode