Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Как разбить файл на части, а потом его собрать?   Найти похожие ветки 

 
Генри ©   (2005-02-24 22:42) [0]

Здравствуйте!
У меня вопрос - как разбить файл на части, а потом его собрать? Спасибо!


 
Anatoly Podgoretsky ©   (2005-02-24 22:46) [1]

Открыть новый файл, записать Н байт, закрыть, открыть следующий файл, записать Н байт, закрыть, и так до конца входного файла.


 
Eraser ©   (2005-02-24 23:20) [2]

Генри ©

На какие части?


 
Генри ©   (2005-02-24 23:41) [3]

2 Eraser
на равные по размеру.


 
Генри ©   (2005-02-24 23:43) [4]

Пожалуйста, подскажите как считывать H байтов из файла??
с помощью какой функции??


 
Palladin ©   (2005-02-24 23:45) [5]

BlockRead


 
Eraser ©   (2005-02-24 23:46) [6]

Генри ©

Или можешь использовать класс TFileStream.


 
Генри ©   (2005-02-24 23:51) [7]

А какие есть ещё методы решения этой задачи?


 
Palladin ©   (2005-02-24 23:52) [8]

А какие еще есть алгоритмы решения этой задачи?


 
Eraser ©   (2005-02-24 23:52) [9]

Eraser ©

Чем предыдущие два не устраивают? Какие к "методам" ты предъявляешь требования?


 
Генри ©   (2005-02-24 23:56) [10]

2 Palladin
Наверное алгоритмов решения больше нет (ИМХО).
2 Eraser
Главное простота в реализации.

Если не затруднит, можно маленький пример решения подобной задачи?


 
Eraser ©   (2005-02-25 00:00) [11]

Генри ©

А справку или вообще хоть что-нибудь читать пробовал.
BlockRead подробно описан даже в книжках по Turbo Pascal для школьников.


 
Генри ©   (2005-02-25 00:04) [12]

2 Eraser
изучать Delphi только начал, книжками ещё не обзавёлся -(


 
Palladin ©   (2005-02-25 00:06) [13]


> [10] Генри ©   (24.02.05 23:56)

Есть, но они гораздо более сложны в реализации нежели чем предложенный.

Пример так пример. Надеюсь он чему нибудь да научит.

Procedure SplitFile(Const S:String;p_nPartSize:Integer);
Var
F,R:File;
Buf:Pointer;
i,nReaded:Integer;
Begin
i:=1;
GetMem(Buf,p_nPartSize);
AssignFile(F,S); Reset(F,1);
Whilte True Do
 Begin
  BlockRead(F,Buf^,p_nPartSize,nReaded);
  If nReaded=0 Then Break;
  AssignFile(R,S+".Part."+IntToStr(i)); Rewrite(R);
  BlockWrite(R,Buf^,nReaded);
  CloseFile(R);
 End;
CloseFile(F);
End;


 
Генри ©   (2005-02-25 00:10) [14]

Всем большое спасибо за помощь!


 
Palladin ©   (2005-02-25 00:16) [15]

:)
Называеться найди ошибку...


 
Генри ©   (2005-02-25 00:35) [16]

Сейчас состряпал:

var
f:TextFile;
Ch:char;
Buf:Array [1..10] of Char;
begin
if OpenDialog1.Execute then
AssignFile(f,OpenDialog1.FileName);
Reset(f);
BlockRead(f,Buf,10);
CloseFile(f);
end;
end.
Почему  в этой строке выдаёт ошибку BlockRead(f,Buf,10) ???


 
iskatel ©   (2005-02-25 00:42) [17]

^ поставь...


 
Генри ©   (2005-02-25 00:45) [18]

2 iskatel
всё равно не прёт..-(


 
Palladin ©   (2005-02-25 00:46) [19]


> [17] iskatel ©   (25.02.05 00:42)

Чушь советовать не стоит...


> [16] Генри ©   (25.02.05 00:35)

TextFile не есть File... Совсем не есть...
Читай справку о различиях...


 
Генри ©   (2005-02-25 00:48) [20]

Угу, сообразил.


 
Palladin ©   (2005-02-25 01:02) [21]

http://www.delphikingdom.com/lyceum/seminar.asp?partID=4
на всякий случай...



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
4-1107264874
stud
2005-02-01 16:34
2005.03.13
проблема с протоколом MODBUS


1-1109427972
-_-
2005-02-26 17:26
2005.03.13
Проблема с Delphi 2005 Architect


4-1106906105
grigory
2005-01-28 12:55
2005.03.13
Послать сообщение CheckBox у!


4-1106567663
MAXHO
2005-01-24 14:54
2005.03.13
LPT


1-1109248689
Алина
2005-02-24 15:38
2005.03.13
Запрет отображения компонента