Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2008, 17:46   #1
Pord
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 20
По умолчанию Delphi Блочная запись

Помогите пожалуйста найти ошибку. При записи нового блока удаляется последний символ старого. и я не могу понять почему.
Код:
const
  BufferSize = 65536;
var
  FileToSave:File;
  buffer:array[Word] of byte;
  i:LongWord;
  Temp:String;
begin
  NumRec:=0;
  Temp:=Pad.Text;
  AssignFile(FileToSave,FilePath);
  FileMode:=fmOpenWrite;
  Rewrite(FileToSave,BufferSize);
  while Temp<>'' do
    begin
      for i := 0 to BufferSize-1 do
      begin
        if Length(Temp)>=i then
          Buffer[i]:=Ord(Temp[i+1])
        else
          begin
            Reset(FileToSave,Length(Temp));
            Seek(FileToSave,FileSize(FileToSave));
            break;
          end;
      end;
      BlockWrite(FileToSave,buffer,1);
      Delete(Temp,1,BufferSize);
      Inc(NumRec);
    end;
  CloseFile(FileToSave);
Заранее спасибо
Pord вне форума Ответить с цитированием
Старый 07.11.2008, 18:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему бы тебе при таком раскладе не работать с обычными TextFile?
ТОгда простой Write будет делать всю грязную работу?
типа такого:
Код:
var
  FileToSave:textFile;
  buffer:array[Word] of byte;
  i:LongWord;
  Temp:String;
begin
  Temp:='123456';
  AssignFile(FileToSave,'c:\1\q.txt');
  FileMode:=fmOpenWrite;
  Rewrite(FileToSave);
  for i:=1 to length(temp) do temp[i]:=temp[i+1];
  delete(temp,length(temp)-1,1);
  Write(FileToSave,temp);
  CloseFile(FileToSave);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2008, 10:57   #3
Pord
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 20
По умолчанию

потому что в дальнейшем этот алгоритм должен будет на лету переводить в Unicode и UTF-8
Pord вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись дисков в Delphi FaTaL Общие вопросы Delphi 16 19.04.2011 20:15
Запись CD/DVD дисков в Delphi Igoressicus Общие вопросы Delphi 10 17.07.2008 18:40
Блочная верстка Demonichka HTML и CSS 2 12.07.2008 01:31
Запись на диск через Delphi delphin100 Общие вопросы Delphi 1 09.10.2007 10:10
Запись в буфер Delphi & Asm SteelRat Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 27.02.2007 22:49