AutoHotkey_L (AHK) functions to load from CSV files, sort, display and save as CSV collections of records using the Object data type. Files can be read and saved in any delimited format (CSV, semi-colon, tab delimited, single-line or multi-line, etc.). Collections can also be displayed, edited and read in GUI ListView objects.
In ObjCSV_CSV2Collection, Lines 125-126:
if InStr(strFieldNamesMatchList, objHeader[A_Index]) ; field name is duplicate
objHeader[A_Index] := objHeader[A_Index] . "_" . A_Index ; add field number to field name
If objHeader[A_Index] is included as part of an existing field name (eg "Name" vs "Name of the boss"), it is actually considered as duplicate but it is not.
Base the progress on data size instead of number of lines.
Do not rely on a value passed to intProgress (see comment below).
Replace intProgress by a boolean as for other functions.
Actual comment in the source:
intProgress := 0
Optional. If 0, progress bar is is NOT shown. If greater than 0, a progress bar is displayed with intProgress as the maximum progress value. Should be use only for very large files. By default 0. NOTE-1: Because there is no way for the script to know in advance the number of lines in the file, provide the exact number (if known) or an approximative number of lines. NOTE-2: If true (or 1), a progress bar is shown already filled while the processing occurs.