Quote: "I don't see that they directly compete to be honest. Sure, you can build an equivalent to Dark Data out of my datafile commands, but that would be quite a bit of work, so why would you want to."
Yeah you're right they don't compete with each other because it does take a bit more work than most people are willing to do to get your DATAFILE commands to act like Dark Data.
When I started my current project I didn't even look at Dark Data and thought that your amazing plugin was the only way to accomplish a huge database that I couldn't achieve with the native Darkbasic Pro file commands or memblocks.
Here's what I do in my current project to get close to Dark Data:
Create a UDT the way you wish the data structure in the file to be so you can easily count the bytes required for each record and have a place to store that data to view/edit easily.
Open a file with OPEN DATAFILE TO UPDATE to preserve all data in the file and allowing us to jump anywhere in the file to load/save data.
Adding fields in Dark Data where each piece of data requires a certain amount of characters in strings (of course since binary files are the same way) can be done by using your PADLEFT$() or PADRIGHT$() commands to reduce or increase the string so the data saved doesn't overwrite the next piece of data in the database. Numbers would just have to be calculated using the standard number of bytes saving that particular datatype to a file (like 4 bytes for integers).
Having the ability to reuse deleted records would only need a single byte to represent if the record is deleted (to be undeleted later) or completely wiped out and free to use when another record is added. Before adding a new record a simple search of the database is done to find the first record that's permanently deleted or start at the end of the file if no deleted records are found.
Loading/saving a certain record is just calculating how many total bytes each record takes up and multiplying it by the record number you wish to load/save and using SET DATAFILE POSITION to get there in the file.
Now there may be more stuff in Dark Data that I didn't post a way to mimic but I don't have it so I don't know for sure all it's commands. All in all I think it's worth the extra work but again most people may not like to put in the extra effort.