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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 20:37   #1
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
Восклицание Бинарные файлы

Товарищи...выручайте...
Нужно удалить определенную часть бинарного файла (от начала файла)
Что-то типа лечения
Kazik вне форума Ответить с цитированием
Старый 06.06.2010, 20:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Язык программирования то какой?

а вообще, TFileStream - исходный файл открыли, переписали с определённой позиции в выходной файл.
буквально несколько строк... Хотите пример на Delphi ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.06.2010, 20:56   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

варианта два, через временный файл, и через память(первый надежнее)
1)временный файл
Код:
procedure DeleteBytesFromStart(Filename:string;CountOfBytes:integer);
var TempName:string;
     FS,TFS:TFileStream;
begin
 TempName:=FileName+'.tmp';
 RenameFile(PChar(FileName),PChar(TempName));
 FS:=TFileStream.Create(FileName,fmCreate);
 TFS:=TFileStream.Create(TempName,fmOpenRead);
 TFS.Seek(CountOfBytes,soFromBeginning);
 FS.CopyFrom(TFS,TFS.Size);
 FS.Free;
 TFS.free;
 DeleteFile(TempName);
end;
2)память
Код:
procedure DeleteBytesFromStart(Filename:string;CountOfBytes:integer);
var FS,:TFileStream;
     MS:TMemoryStream;
begin
 FS:=TFileStream.Create(FileName,fmOpenRead);
 MS:=TMemoryStream.Create;
 FS.Seek(CountOfBytes,soFromBeginning);
 MS.CopyFrom(FS,FS.Size);
 FS.Size:=0;
 FS.CopyFrom(MS,MS.Size);
 FS.Free;
 MS.free;
end;
со вторым если честно до конца не уверен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.06.2010, 21:06   #4
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

звиняте...язык C++Builder
забыл блин
Kazik вне форума Ответить с цитированием
Старый 06.06.2010, 21:10   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хм, на билдере, сейчас переведу проверю, и тогда выложу.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.06.2010, 21:51   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в общем вот
1)временный файл
Код:
void DeleteBytesFromStart(AnsiString FileName,int CountOfBytes)
{
     AnsiString TempFile=FileName+".tmp";
     RenameFile(FileName,TempFile);//тут не уверен что приведение типов не нужно
     TFileStream* FS=new TFileStream(FileName,fmCreate);
     TFileStream* TFS=new TFileStream(TempFile,fmOpenRead);
     TFS->Seek(CountOfBytes,soFromBeginning);
     FS->CopyFrom(TFS,TFS->Size);//тут могут скобки понадобится, или/и разименоывание указателя(*TFS)
     delete FS;
     delete TFS;
     DeleteFile(TempName);
}
2)память
Код:
void DeleteFilesFromStart(AnsiString FileName,int CountOfBytes)
{
     TFileStream* FS=new TFileStream(FileName,fmOpenRead);
     TMemoryStream* MS=new TMemoryStream();
     FS->Seek(CountOfBytes,soFromBeginning);
     MS->CopyFrom(FS,FS->Size);//то же что и в первом
     FS->Size=0;
     FS->CopyFrom(MS,MS->Size);//см выше
     delete FS;
     delete MS;
}
проверить правда не могу, у меня билдер веселый, виснет вечно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарные файлы С++ Builder ATL Помощь студентам 4 19.11.2009 21:24
Структуры,запись в бинарные файлы,массивы(С++) TOSHH Общие вопросы C/C++ 1 10.10.2009 02:01
Бинарные файлы VorobeY1326 Общие вопросы C/C++ 12 09.05.2009 21:00
С++ Бинарные файлы EwwwA Общие вопросы C/C++ 0 20.04.2009 17:32
Builder C++ бинарные потоки,файлы Yakushov C++ Builder 1 21.12.2008 11:55