trashy Posted August 29, 2017 Posted August 29, 2017 (edited) Using My_Drivers.ini (can be located root of any fixed, usb or cd drive)as a tag file to locate and set the drive as well as reading the info. Everything seemed to be working fine till I tried on a machine with an empty floppy and a couple empty sd card readers. Started getting error no disk please insert disk or something similar. It's not crashing just excessive error popups. I tried replacing the second error check with a DriveStatus check but failed miserably. I'm fairly new to arrays but usually I stick to it long enough I can find a solution. This time I'm lost, been trying a couple days on and off and no success. Everything I tried to modify or remove failed If @error Then ContinueLoop EndIf Please Help! Global $Profile = IniRead('X:\ProgramData\DEI_PE\Profile.ini', 'MyProfile', 'Profile', 'Unknown') Get_Drive() Func Get_Drive() Local $aArray, $aDrives = DriveGetDrive("ALL") If @error = 0 Then For $i = 1 To $aDrives[0] $aArray = _FileListToArrayRec($aDrives[$i] & "", "My_Drivers.ini", 1, -1, 1, 2) If @error Then ContinueLoop EndIf For $j = 1 To $aArray[0] ;_ArrayDisplay($aArray, '', '', 0, Default, '') $tString = StringSplit($aArray[1], "\") _ArrayAdd($aArray, $tString) _ArrayDelete($aArray, 4) _ArrayDelete($aArray, 2) _ArrayDelete($aArray, 0) ;_ArrayDisplay($aArray, '', '', 0, Default, '') Next Global $Array = ($aArray[0]) If IniRead($aArray[0], 'Load_at_boot', 'Auto_Load', 'Off') = "Off" Then Global $Auto = "Off" ElseIf IniRead($aArray[0], 'Load_at_boot', 'Auto_Load', 'Off') = "On" Then Global $Auto = "On" EndIf Global $MyDevices = $aArray[1] & "\My_Drivers\My_Devices\" & $Profile Global $MyProfile = $Profile Next EndIf EndFunc ;==>Get_Drive This is just a snippet from the entire code but everything relies on the location and info store by ini file. Need to search all fixed, usb and cd drives Edited August 29, 2017 by trashy
trashy Posted August 29, 2017 Author Posted August 29, 2017 (edited) Tried DriveGetDrive("REMOVABLE") and also tried DriveGetDrive("FIXED") Separately they work with no annoying please insert disk(I'll tell you what to insert) I see no way to combine the two types, one or the other or all? Edited August 29, 2017 by trashy
kylomas Posted August 30, 2017 Posted August 30, 2017 trashy, Try testing the status of the drive at each iteration of the for loop on $aDrives for "READY". kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
trashy Posted August 30, 2017 Author Posted August 30, 2017 My goal was to find a tag file at the root of any drive. Using the array the way I was I would get the dreaded Please insert disk popup on empty floppy or card reader etc... It was driving me nuts it wasn't a major problem but I wasn't satisfied. For me to say this is nuts I had to think keep it simple dumb it down a little and finally!!!!!!!! I think this really is simple sweet #include <AutoItConstants.au3> #include <MsgBoxConstants.au3> #include <Array.au3> #include <File.au3> Global $aArray = DriveGetDrive($DT_ALL) Global $tagfile = "\My_Drivers.ini";<<<<<<<<<<<<Here's your tag file If @error Then ; An error occurred when retrieving the drives. MsgBox($MB_SYSTEMMODAL, "", "It appears an error occurred.") EndIf Global $aFILEINFO[UBound($aArray)][4] For $i = 1 To $aArray[0] $aFILEINFO[$i][0] = StringUpper($aArray[$i]) $aFILEINFO[$i][1] = DriveStatus($aFILEINFO[$i][0]) If $aFILEINFO[$i][1] = "READY" Then $bArray = FileFindFirstFile($aFILEINFO[$i][0] & $tagfile) If $bArray = "-1" Then $bArray = "" Else $bArray = $tagfile EndIf $aFILEINFO[$i][2] = $bArray $aFILEINFO[$i][3] = $aFILEINFO[$i][0] & $bArray EndIf Next _ArraySwap($aFILEINFO, 0, 1, True) _ArrayDisplay($aFILEINFO, '', '', 0, Default, '')
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now