vor ein paar Tagen bin ich nach der Neuinstallation meines PCs (Windows 7 64 Bit) auf Lazarus V1.6 32 Bit umgestiegen, vorher hatte ich V1.4.2 installiert. Nachdem ich gelesen hatte, dass sogar eine Anwendung mit etwa 250.000 Zeilen Code keine Probleme machte dachte ich, ich könnte es wagen. Leider funktioniert mein Mini-Programm mit nur zwei Forms seitdem nicht mehr. Auf einem zweiten PC, auf dem noch V1.4.2 läuft, kompiliert und funktioniert das Programm nach wie vor. Vielleicht habt ihr ja eine Idee wo ich suchen muss. Das Problem sitzt wohl mal wieder zwischen Tastatur und Stuhl...
In den Items einer ComboBox speichere ich nicht nur Strings sondern auch damit verknüpfte Objekte (am USB angeschlossene Geräte). Wenn ich nach Interfaces scanne, werden zunächst die alten aus der Liste gelöscht und dann neu gesucht.
Der Teil der scheinbar Probleme macht ist folgender:
// Delete all items from the combobox
for i := 0 to cboInterface.Items.Count - 1 do
TMyUSBInterface(cboInterface.Items.Objects).Free;
cboInterface.Clear;
cboInterface.Items.Count ist 1, da ein Gerät angeschlossen ist (im Debugger verifiziert). Trotzdem wird "Free" nach der Freigabe des Objektes mit Index 0 nochmals aufgerufen, so dass mein Programm ein nicht existierendes Objekt freigeben will. Das funkioniert natürlich nicht (SIGSEGV). In V1.4.2 tritt dieses Problem aber nicht auf

Hat sich etwas grundlegendes seit der Version 1.4.2 geändert, das ich übersehen habe oder hat jemand von Euch eine Idee, was ich falsch mache?
Vielen Dank für Eure Hilfe!
Beste Grüße,
Ralf (DL5EU)