Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#17

AW: TDirectory.GetLogicalDrives

  Alt 17. Nov 2020, 13:58
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
  Mit Zitat antworten Zitat