Показать сообщение отдельно
  #6  
Старый 16.09.2009, 09:39
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

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;
Ответить с цитированием