FF00 - это уже далеко не байт а целое слово.
Как один из вариантов :
Код:
function File_ChangeByte(FileName : string; NumByte : integer; ByteVal : byte) : boolean;
Var
Yes : boolean;
F : file of byte;
begin
Result:=false;
if NumByte>=0 then begin //проверка выхода за граница
AssignFile(F,FileName);
{$I-} reset(F) {$I+}; //файл откр. на чтение
Yes:=(IoResult=0);
if Yes then begin //удачно
try
if NumByte<FileSize(F) then begin //проверка выхода за граница
{$I-} seek(F,NumByte){$I+}; //позициионируемся на нужном байте
Yes:=(IoResult=0);
if Yes then begin //успешно
{$I-} write(F,ByteVal) {$I+}; //меняем значение байта
Result:=(IoResult=0);
end;
end;
finally
{$I-} CloseFile(F) {$I+}; //закрываем файл
Yes:=(IoResult=0);
end;
end;
end;
end;