Yes, your file is certainly too small for the number of triangles. The STL format has an 84 byte header, and the minimum number of bytes per triangle is 50 bytes (3 32-bit floats for facet normal, 9 32-bit floats for the vertex positions, 1 16-bit integer for "attribute byte count"). Your file clearly claims to store 103740 triangles, so we expect
84 + (50 * 103740) = 5187084 bytes of data = 5.19 mb
but the sample file you shared is only 1910284 bytes = 1.91mb.
I have to say, I am very unfamiliar with how your program uses FileWrite(). This does look pretty archaic to me. I would suggest you try using blockwrite() as shown below - I have often used this for large binary files. Alternatively, my prior code looks uses TMemoryStream, which also works. As a sanity check, you should make sure your program generates a file of the expected size.
Here is how I would write a binary file:
f:file;
begin
assign(f,'BINARY_STL.stl') ;
rewrite(f,1);
blockwrite(f,a,sizeof(a));
blockwrite(f,b,sizeof(b));
...
close(f);
end;