I made a tool in Delphi to create a rainbow table. It was fine until the file grew up to 3.1 GB. I closed my program. Then I opened it again and it crashes while executing this code:

Assign(RainbowFile,'Rainbow_table.txt'); {assign a text file}
Append(RainbowFile);

Delphi shows the error

raised exception class EInOutError with message 'I/O error 131'.

My question: how do to append data to an existing file larger than 2 GB. [Obsolete]

Next question: Currently I have in my code:

Content_to_file := (#13+#10+Start_string+':'+
                    hexstr(GTA_San_Andreas_CRC32(Start_string), 8));
RainbowFile_handle.WriteBuffer( Content_to_file[1],
                                Length(Content_to_file)*SizeOf(Char));

How do you get rid of the Content_to_file variable? I want put it directly to the WriteBuffer if it’s possible.


1st edit TFileStream works with files bigger than 2 GB. I tested it now. However is it possible to write like so:

RainbowFile_handle.WriteBuffer( Start_string[1]+':',

I mean to pass no variable argument. Or do I definitely have to pass the first char of a variable?


2nd edit I have currently made it work this way:

Content_to_file := (#13+#10+Start_string+':'+
                    hexstr(GTA_San_Andreas_CRC32(Start_string), 8));
RainbowFile_handle.WriteBuffer( Content_to_file[1],
                                Length(Content_to_file)*SizeOf(Char));

Is it possible to do it without this variable?

Edit
Report