folgendes Problem:
Ich habe einen Algorithmus geschrieben, der einen angegebenen Ordner und die Unterordner nach Dateien durchsucht. Als kleine Übung und weil mir die Funktion FindAllFiles() nicht ausreicht, weil sie nicht die Datei-Attribute berücksichtigt.
Jedenfalls habe ich dann die Ergebnisse in eine ListBox ausgegeben und wollte nach ganz unten scrollen und dann kamen folgende Fehlermeldungen:
1. Debuggerausnahmen-Nachricht
Projekt <beliebiger Projektname> hat Exception-Klasse >>RunError(201)<< ausgelöst.
In Datei 'win32\win32callback.inc' in Zeile 742:
ScrollCode := LOWROD(WParam);
Dann habe ich mir den Quellcode der Datei angesehen, in der die Exception auftritt und folgenden Kommentar gefunden:2. Debuggerausnahmen-Nachricht
Projekt <beliebiger Projektname> hat Exception-Klasse >>ERangeError<< ausgelöst mit der Meldung:
Range check error.
In Datei 'win32\win32callback.inc' in Zeile 742:
ScrollCode := LOWROD(WParam);
Lässt sich mit folgendem Code reproduzieren:MWE hat geschrieben:TLMScroll has not the same size as the VCL/Winapi counterpart.
IMO we don't have to force all widgetsets to be compatible in a shortcoming
in the win32 API.
So POS: SmallInt -> LongInt and a win32compatible smallpos is added
Due to this, the record is a LongInt to large.
Code: Alles auswählen
ListBox1.Items.BeginUpdate;
repeat
ListBox1.Items.Add('TEST');
ListBox1.Tag := ListBox1.Tag + 1;
until ListBox1.Tag = 40000; // mit 30.000 geht es noch aber mit High(SmallInt) + 20 schon nicht mehr
ListBox1.Items.EndUpdate;
Gibt es eine Möglichkeit, diesen Fehler zu umgehen? Ich habe probiert, die Datentypen anzupassen, also aus SmallInt -> Integer, aber das klappt nicht. (Hätte ich mir auch denken können, denn, wenn es gehen würde, würde es dort auch stehen. Ich probiere eben gerne rum.)
-- Dee