Inzwischen kann ich die
AV an sich nachvollziehen. Ab dem dritten Durchlauf der Funktion DriveDisplayNames bekomme ich folgende
AV, reproduzierbar:
Code:
---------------------------
Project1
---------------------------
Access violation at address 004030B5 in module 'Project1.exe'. Read of address 00000054.
---------------------------
OK
---------------------------
Keine der von himitsu gebotenen Varianten für MultiSzToStrings ändert daran etwas.
Die
AV tritt
nicht auf, wenn ich eines der folgenden Dinge tue:
- Die Liste wird direkt an ComboBox1.Items zugewiesen statt über den Umweg einer weiteren lokalen Stringliste
- Die Funktion DriveDisplayNames so modifiziert, dass sie DriveDisplayName nicht aufruft (so dass nur die Laufwerksbuchstaben in der Liste stehen)
- eine mit D5 kompilierte Anwendung nutze.
Leider tritt das Problem bei mir nur auf dem Host auf, wo ich kein Delphi habe (und ich keinen Remotedebugger installieren will), so dass eine genauere Untersuchung extrem erschwert wird. Mir ist auch nach x-fachem Durchkauen des Codes der
Unit und dem Testen kleinerer Änderungen schleierhaft, wo das Problem stecken soll
.
Bemerkenswert ist noch Folgendes: Mein System hat die Laufwerke B: bis Y: (mit einigen Lücken). Bei den ersten beiden Aufrufen werden alle angezeigt, ab dem dritten geht's nur noch bis einschließlich H: - es fehlt die Hälfte aller Laufwerke.
Grüße
Dalai