![]() |
File Id calculator allows you to create unique 32 bit
number series from file contents.
With ids you can
find files with matching contents. You can find file copies and check, that file
contents hasn't changed.
DOWNLOAD
LATEST VERSION
Upload date : 2021.5.12 - 0.00 GMT... DOWNLOAD
DLL for GetFileId function
Upload date : 2021.5.18 - 1.00 GMT- May 18th 2021 : DLL for GetFilId function was added. Package has executable with sources, which shows explains how to use DLL function. Function is a direct, un-altered extract from the program. Size - 317 kB - comes from the required non-standard R&D utility functions, which are used / called in the function. Later DLL download was replaced with version, which has 64 bit results and which uses C++ compatible null terminated string pointers. Widestring version needed way too much trouble. Files, whose names don't convert directly into ANSI, can be handled in Ansi environment with Alternate file name. After conversion these names have question marks, easy to check and replace faulty name with alternate name before call.
- May 11th 2021 : Program checks drive attributes in real-time, after selecting / changing drives. After extraction to stand alone executable, program lost automated updater system for changes in drives. Program doesn't clear name data after you choose new drive. It un-checks new use custom name check box. Have to clear names, when drive changes, so that you don't accidentally override batch job results. From now on, you can change splitter chars from Ini-file only. Program got enhanced Splitter-Bars. Enhanced bars can have text in them, just like labels. You can use them to size boxes, just like before and in elsewhere. Splitter-Bars are bit messy, when you have more than one per side. If you mess the system, you can restore default widths for non stretching fields with Double Clicks to headers. If this doesn't help, you must close the program with restored widths in non-stretching fields. Next time you open program, fields should be correctly on the screen.
- May 9th 2021 : restored accidentally disabled path and wildcard settings for FileList on the right.
- May 9th 2021 : program got an attribute cutter for Windows XXX. Windows XXX outputs attributes with over 1000 numeric values, cutter drops these additional attributes from the file. Fixed range error for Serial Numbers, which are bigger than 2.1 billions.
- Released May 9th 2021 : Latest version has better user interface. All launch screen buttons work. There aren't abandoned buttons and fields. Screwed the sources for the first download. These downloads are made from old back ups. These official downloads misses still few things from the original download. Program has now the final file format.
File format for File Id lists
17 May 2021 A line format was changed a little . There is utility function for converting previous files to new format.
- Default block length was changed to 16 chars. Block lengths are stored to A lines, it can be changed from launch screen per file basis
- A-lines third character run time status code. When program creates or updates file, this code is W, when iteration is cancelled code is C. Second char is E, when following A section has errors. When iteration is terminated immediately, code is W and file has size reservation block at the end of file.
- Due to custom block length, length section's name length entry was increased from 3 to 4 chars. With hex codes, max size for variable length data block is 65 535 chars ( FFFF = 65 535 )In later development, Ini file like text base system standard key data length is 16 chars. Ini file like dataBase uses 4 char tabs in beautifying, 15 char block conflicts with the base data system.
- - - -
All functions for file id list manipulation expects, that data on line is in given fixed columnar positions. In table like files, like this, tabs are forbidden. In file and line manipulation, tab which expands on-screen text with 2 or more spaces is only one character long. Empty space after variable length name / data must be made with SpaceBar, space after name must exist in the file. Bundled editors have TabsToSpaces option enabled, you can use tab key for space creation.
Demand for fixed positioning goes also to digit grouping. FileIds and serial numbers must always be 5+5 groups. Right aligned numbers must in three digit groups. In digits utility functions skips over spaces, without checking, whether they are empty or not.
Dates must be in sample's ISO format. Routines, which convert character dates into numeric values doesn't work without hyphens in between date data, space in between date and time and semicolons in between time data. FileId calculators own functions need that values are in correct positions, calculator copies and converts character dates directly into Windows' system date record. Continues from system time record to numeric File-time and Delphi-time formats.
If you manipulate files manually, you should use fixed fonts in your editor. Windows has three bundled fixed-width fonts, they Courier, Courier New and Fixedsys. In bundled editors and Notepad++ you can cut, copy and paste columnar data, with mouse. These editors shift into columnar selection, when you press Alt before you press left mouse button. When you have columnar data in clipboard, these editors pastes data automatically in columnar mode.
System, where you can have variable length width data in database, is brand new thing in database programming. When built and indexed properly performance penalty from variable length records is marginal. 40 years ago, in 1980s, almost all databases were simple text files where data was in fixed columnar positions.
RID STS SORT Serial Number Volume Label Job began Job Ended b-lng Lengths Directory Name ID LENGTH _ DL Path data A 1 W/C 03351 52667 CW233_USR 2021-05-08 23:37:13 2021-05-08 23:37:15 15 5+4 | _IMDB /p 3+0 | 4 D:\ RID STS SORT File Id File Size Date Modified Date Created Attr Lengths File name ID LENGTH _ DL Path data F 01196 66910 1 427 817 2020-06-23 11:42:06 2021-03-12 11:37:34 32 34+4 | 3 Days to Kill (2014) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 05556 05730 1 637 985 2020-07-01 03:26:04 2021-03-12 11:37:35 32 29+4 | Allegiant (2016) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 29540 55660 1 639 523 2020-06-30 05:44:54 2021-03-12 11:37:35 32 39+4 | Crank_ High Voltage (2009) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 39179 44440 1 422 422 2020-06-23 11:39:28 2021-03-12 11:37:34 32 28+4 | Deadpool (2016) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 26408 63895 1 459 038 2020-06-23 11:40:12 2021-03-12 11:37:34 32 30+4 | Deadpool 2 (2018) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 34277 42640 1 852 726 2020-07-01 03:25:10 2021-03-12 11:37:35 32 29+4 | Divergent (2014) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 42548 59875 2 782 584 2020-07-11 16:09:12 2021-03-12 11:37:35 32 32+4 | Galaxy Quest (1999) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 26617 69560 1 367 937 2020-06-19 07:22:44 2021-03-12 11:37:34 32 30+4 | Game Night (2018) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 28824 25905 1 683 191 2020-07-02 13:46:40 2021-03-12 11:37:35 32 30+4 | Knives Out (2019) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 14319 39750 1 610 575 2020-07-02 12:18:12 2021-03-12 11:37:35 32 42+4 | No Country for Old Men (2007) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 11306 09820 1 437 863 2020-06-19 07:25:48 2021-03-12 11:37:34 32 36+4 | Ready Player One (2018) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 38590 94010 1 344 414 2020-06-19 07:30:46 2021-03-12 11:37:34 32 27+4 | Red Eye (2005) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 36942 07950 1 511 134 2020-06-23 11:22:22 2021-03-12 11:37:35 32 29+4 | Rush Hour (1998) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 13536 25425 1 455 064 2020-07-16 16:08:40 2021-03-12 11:37:35 32 45+4 | The Chronicles of Riddick (2004) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 17613 84195 1 787 011 2020-07-16 16:06:52 2021-03-12 11:37:35 32 43+4 | The Curse of la Llorona (2019) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 29271 20775 1 650 405 2020-07-01 15:17:26 2021-03-12 11:37:35 32 36+4 | The Hunger Games (2012) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 22298 93910 1 683 261 2020-07-01 03:28:02 2021-03-12 11:37:35 32 35+4 | The Maze Runner (2014) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 15508 20240 1 688 696 2020-07-02 12:49:54 2021-03-12 11:37:35 32 44+4 | The Silence of the Lambs (1991) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 08893 75485 1 393 852 2020-07-02 12:14:54 2021-03-12 11:37:35 32 32+4 | The Stranger (1946) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 19526 80860 1 825 595 2020-07-07 17:15:54 2021-03-12 11:37:35 32 46+4 | The Twilight Saga_ Eclipse (2010) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 21195 32970 1 806 754 2020-07-07 17:15:36 2021-03-12 11:37:35 32 47+4 | The Twilight Saga_ New Moon (2009) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ F 04053 33975 1 799 503 2020-07-07 17:15:06 2021-03-12 11:37:35 32 28+4 | Twilight (2008) - IMDb.mhtml /p 9+0 | 4 D:\_IMDB\ Sum of ids for root directory Total size Number of files Attr Lengths Directory Name ID LENGTH _ DL Path data R 00 000 000 056 501 524 530
39 927 961
24
16 6+4 | _IMDB\ /p 3+0 | 4 D:\ RID STS SORT File Id File Size Date Modified Date Created Attr Lengths File name ID LENGTH _ DL Path data F 08235 78345 1 934 481 2020-06-23 11:32:04 2021-03-12 11:37:35 32 24+4 | Amber Heard - IMDb.mhtml /p 19+0 | 4 D:\_IMDB\_xActress\ F 34600 51395 1 991 943 2020-06-23 11:46:50 2021-03-12 11:37:36 32 23+4 | Emma Stone - IMDb.mhtml /p 19+0 | 4 D:\_IMDB\_xActress\ F 18302 61480 1 928 255 2020-06-23 11:45:42 2021-03-12 11:37:35 32 27+4 | Felicity Jones - IMDb.mhtml /p 19+0 | 4 D:\_IMDB\_xActress\ F 28281 62925 1 906 557 2020-06-19 07:24:40 2021-03-12 11:37:36 32 25+4 | Lynn Collins - IMDb.mhtml /p 19+0 | 4 D:\_IMDB\_xActress\ F 34503 52215 228 732 2020-07-07 11:54:24 2021-03-12 11:37:36 32 34+4 | Naomi Scott - Biography - IMDb.pdf /p 19+0 | 4 D:\_IMDB\_xActress\ F 05060 61270 2 090 605 2020-07-07 11:54:10 2021-03-12 11:37:36 32 26+4 | Naomi Scott - IMDb 1.mhtml /p 19+0 | 4 D:\_IMDB\_xActress\ R 00 000 000 012 898 467 630 10 080 573 6 16 10+4 | _xActress\ /p 9+0 | 4 D:\_IMDB\ F 25128 74040 1 921 762 2020-07-04 22:08:18 2021-03-12 11:37:36 32 42+4 | Zombieland_ Double Tap (2019) - IMDb.mhtml /p 16+0 | 4 D:\_IMDB\DvdMP4\ R 00 000 000 002 512 874 040 1 921 762 1
16 7+4 | DvdMP4\ /p 9+0 | 4 D:\_IMDB\ F 09497 33220 1 843 947 2020-07-06 03:19:06 2021-03-12 11:37:36 32 47+4 | __ The Stranger (TV Series 2020– ) - IMDb.mhtml /p 27+0 | 4 D:\_IMDB\DvdSubConversions\ F 20505 90150 1 837 699 2020-07-06 03:53:36 2021-03-12 11:37:36 32 53+4 | Scary Stories to Tell in the Dark (2019) - IMDb.mhtml /p 27+0 | 4 D:\_IMDB\DvdSubConversions\ R 00 000 000 003 000 323 370 3 681 646 2
16 18+4 | DvdSubConversions\ /p 9+0 | 4 D:\_IMDB\ Total sum for all entries Total size Number of files Attr Lengths Directory Name ID LENGTH _ DL Drive of iteration T 00 000 000 074 913 189 570
55 611 942
33
FE 5+4 | _IMDB /p 3+0 | 4 D:\
Begins Ends Size All lines begin with record id. It can be A, F, R-S-T. Id defines type of column aligned line. 1 1 1 Second char is status code. It is empty for valid F-R-S-T lines. 2 2 1 Third character is custom quick sort code. 3 3 1 F - LINES
Fourth field is File id. On F lines id are always 00000 00000 format. 4 14 11 Then comes file size in bytes. Size is always 3 number groups, with leading blanks 15 29 15 Modification date is always in ISO format. Months, days, hours, minutes and seconds have always two digits. 31 49 19 Creation date is also always in ISO format. 51 69 19 File attribute has 3 digits, they are formatted with leading blanks. Three digit attribute touches creation date. 70 72 3 First part from length is file name length, it is length without leading and trailing blanks. Three digit length touches attribute 73 76 4 When $ separates lengths, both lengths are hexadecimal numbers. Plus has common digits.*1 77 77 1 Second part has block count for file name. One block is 15 char long. One digit block count is filled with trailing blank. 78 79 2 Indicator for the beginning of variable length section. Usually vertical bar. Vertical bar is always the first character in reserved section. 80 80 1 Variable length space reservation for file name. Next parameter position is A-line block size * Block Count. 82 - - ADDITIONAL DATA
Additional data section begins with slash. Slash is followed by one char id. Id defines the data contents of the section. 1 2 2 First part from length is actual data length. Four digit length touches attribute 3 6 4 When $ separates lengths, both lengths are hexadecimal numbers. Plus has common digits.*1 7 7 1 Second part has block count for file name. One block is 15 char long. One digit block count is filled with trailing blank. When block-count is 0, the section is last in line. 8 9 2 Indicator for the beginning of variable length section. Usually vertical bar. Vertical bar is always the first character in reserved section. 10 10 1 Section P - PATH DATA SECTION
Path data begins with length of drive definition. For local and mapped drives entry is always 4. Max length for network name is 98 characters. Hex numbers are not supported. 2 digit length touches vertical bar. 11 12 2 Second entry for P-section is path data for the file or directory name. 14 - - R-S-T - LINES ALTERED PART
R-S-T differs from each with sources of summed entries. R-line has totals for preceding root directory, S-line has totals for subdirectories*2 and T-line for all listed entries. Optional S-lines are created after iteration. Lines begin with standard 3 character set 1 3 3 Fourth field is sum of file id. Field uses F lines Id and Size fields. Ids are always fully formatted as "00 000 000 000 000 000 000". 4 29 26 Total size field uses F lines Modification date field. 31 49 19 Number of listed entries uses date part half from creation date. 3 digit groups with leading blanks. 51 60 10 Time part from creation date is not used. It is reserved for directory count. 62 69 8 On T-lines : File attribute has two result codes for iteration. First is F or C. F is finished iteration, C is cancelled iteration.
- E after C or F refers to read errors during file id calculations. Read errors are typically caused by bad, unmarked cluster.71 72 2 After these entries R-S-T lines return to F-line format.
A - LINES ALTERED PART
A-line begins iteration. Record id = A 1 1 1 Status code is 1 - for new iteration, 2 - for continued iteration. 2 2 1 Third character is W for file in progress, C for cancelled iteration, empty finished entry 3 3 1 A line places volumes serial number into FileId field. 4 14 11 A-Line has volume label in size field. 15 29 15 Modification date is date and time when iteration was launched. 31 49 19 Creation date has time, job ended. 51 69 19 File attribute has two result codes for iteration. First is F or C. F is finished iteration, C is cancelled iteration.
- E after C or F refers to read errors during file id calculations. Read errors are typically caused by bad, unmarked cluster.71 72 2 Error codes in F lines File Id Field
When File id is zero, file size should also be zero. When file id begins with $, it means that file was smaller than 6 bytes. File Id field has the whole file contents. Contents is stored as a two char long hexadecimal numbers, without spaces. "!CannotFind" means, that FileId function was unable to query given file. Typical reason is Unicode file, with some special characters. Too long file name is another common reason. "!CannotOpen" means, that FileId function was unable to open given file. Typical reason is, that some other program has locked the file. "!Allocation" means, that FileId function was unable to create buffer for iterating the file. Typical reason is, that given buffer size is bigger than biggest available RAM memory block.
- When buffer allocation fails, before error message FileId function tries to find buffer size, Windows is willing to allocate. You should never get this error message to your lists."%IOxxxxxx refers to read error and possible bad cluster during iteration.
*1: In Delphi, Hexadecimal is converted to decimals with StrToInt function. Hexadecimal must be preceded by dollar sign. Integers are converted to hexadecimals with IntToHex function. File Id calculator uses block lengths only, when you read file, you can copy "+" / "$" indicators to converted string. When you do so, StrToInt gives always correct integer values to your program.
Hexadecimal lengths keeps the spaces in between name length and preceding entry. FF = 256, F = 15 * 16 = 240. Added hexadecimals variable length standard length, so that maximum entry lengths are big enough. FFF = 4095, FF * 15 = 3825. With these maximum size for variable length section is 3800 characters. 15 character blocks are easier in on-screen definitions than 16 chars. With even blocks you go from 30 to 60, 90 and so on.
*2: S-Lines are not yet programmed. They cannot be easily calculated during file iteration, addition during iteration slows down the function way too much. S-lines are added to file afterwards. At some point program gets function , with what you can add missing, fix and recalculate all existing RST lines.