На первый взгляд, да и на второй тоже - флаг при создании файлового потока подсовывается не тот (в смысле лишь fmCreate), получается что он всё время пересоздаётся, точно не знаю как подсовывать два флажка вместе, не копался, но если делать вот так
Код:
...
if FileExists('Obr.txt') then F:=TFileStream.Create('Obr.txt', fmOpenReadWrite)
else F:=TFileStream.Create('Obr.txt', fmCreate);
...
оно должно работать