#include <MsgBoxConstants.au3>
#include <Array.au3>
#include <File.au3>
$BatteryPreFix = InputBox("ID Prefix","If you use a letter Prefix in your battery numbering, enter it here","B")
$sMessage = "Select your .csv file"
$BaseFile = _OpenMyFile($sMessage)
Dim $BaseFileArray
$sMessage = "Select your rePackr .csv file"
$RePackrFile = _OpenMyFile($sMessage)
Dim $rePackerArray
_FileReadToArray ($RePackrFile,$rePackerArray,0,",")
_FileReadToArray ($BaseFile,$BaseFileArray,0,",")
$Series = ubound($rePackerArray,2)
$Parallel = ubound($rePackerArray,1)
$PackSize = $Series * $Parallel
$BaseSize = ubound($BaseFileArray)
if $BaseSize < $PackSize Then
MsgBox(0,"","rePackr and Base '.csv' files are not the same size" & @crlf & "rePackr file is " & $PackSize & ", baseArray is " & $BaseSize)
Exit
EndIf
ConsoleWrite("$Series " & $Series & ", $Parallel " & $Parallel & @CRLF)
TrayTip("Building Pack Data","S" & $Series & ", P" & $Parallel, 10)
_ArraySort($BaseFileArray,1,default ,default ,1)
For $loopSerial = 0 to $Series -1
for $loopParallel = 0 to $Parallel-1
For $loopBase = 0 to $BaseSize -1
if $rePackerArray[$loopParallel][$loopSerial] = $BaseFileArray [$loopBase][1] then
$rePackerArray[$loopParallel][$loopSerial] = Number(StringReplace($BaseFileArray [$loopBase][0],$BatteryPreFix,""))
$BaseFileArray [$loopBase][1] = ""
ExitLoop
EndIf
Next
Next
Next
For $loopSerial = 0 to $Series -1
Dim $tempHoldArray [$Parallel]
for $loopParallel = 0 to $Parallel-1
$tempHoldArray[$loopParallel] = Number($rePackerArray [$loopParallel][$loopSerial])
Next
_ArraySort($tempHoldArray)
for $loopParallel = 0 to $Parallel-1
$rePackerArray [$loopParallel][$loopSerial] = $BatteryPreFix & $tempHoldArray[$loopParallel]
Next
; _ArrayDisplay($rePackerArray)
Next
_ArrayDisplay($rePackerArray)
$sFilePath = "MyPackFile.csv"
_FileWriteFromArray($sFilePath, $rePackerArray, 0, Default , ",")
MsgBox(0,"","Exported Data to file:" & @crlf & @ScriptDir & "\" & $sFilePath)
ShellExecute(@ScriptDir)
Exit
Func _OpenMyFile($sMessage)
Local $sFileOpenDialog = FileOpenDialog($sMessage, @ScriptDir & "\", "csv (*.csv)", BitOR($FD_FILEMUSTEXIST, $FD_MULTISELECT))
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "No file(s) were selected.")
Exit
Else
$sFileOpenDialog = StringReplace($sFileOpenDialog, "|", @CRLF)
return $sFileOpenDialog
EndIf
EndFunc