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

Вниз

Как   Найти похожие ветки 

 
Sergey_la   (2004-01-29 00:40) [0]

Проблема заключается в следующем:
Есть файл длиной где-то в 300 Мб, в конце этого файла -
50 Мб нулей. Как можно получить файл длиной в 250 Мб, не прибегая к копированию даных в новый файл?


 
Palladin ©   (2004-01-29 00:47) [1]

Truncate + F1


 
Slym ©   (2004-01-29 03:58) [2]

SetEndOfFile


 
8ung ©   (2004-01-29 11:43) [3]

Работай с Tmemorystream.
При загрузке файла Tmemorystream грузит файл в память. Таким образом ты можешь изменять файл, открытый Tmemorystream, а затем записать его поверх старого.


 
jack128 ©   (2004-01-29 11:49) [4]


> 8ung © (29.01.04 11:43) [3]
ну да и 300 мешков памяти занимаешь, просто так..


 
8ung ©   (2004-01-29 11:54) [5]

Допустим нули начинаются с байта по адресу $20.
Пример:
var
tm1,tm2 : TMemoryStream;
begin
tm1 := TMemoryStream.Create;
tm2 := TMemoryStream.Create;
tm1.LoadFromFile("C:\file.EXE");//загрузить в tm1 файл "C:\file.EXE"
tm1.Seek(0,soFromBeginning);//прейти в позицию 0 в файле
tm2.CopyFrom(tm1,$20);//скопировать из tm1 в tm2 20h байт
tm1.Free;
tm2.SaveToFile("C:\file.EXE");//сохранить полученный файл в "C:\file.EXE"
tm2.Free;
end;


 
Vit@ly ©   (2004-01-29 11:58) [6]

> Sergey_la (29.01.04 00:40)
читай Palladin © (29.01.04 00:47) [1]
Assign
Reset( ,1)
Seek()
Truncate
Close


 
Palladin ©   (2004-01-29 11:58) [7]


> 8ung © (29.01.04 11:54) [5]

более идиотского решения придумать нельзя...


 
pasha_golub ©   (2004-01-29 12:56) [8]

Palladin © (29.01.04 11:58) [7]

Можно. :-)

for i:= FileSize(F) downto DeletePos do
begin
Seek(F,i);
Truncate(F);
end;


 
Sergey_la   (2004-02-04 00:44) [9]

Ребят, спасибо большое!



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

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

Наверх




Память: 0.48 MB
Время: 0.03 c
3-38715
Pavel_P
2004-01-20 18:35
2004.02.13
Создание БД программно


1-38824
Cheat
2004-02-03 00:25
2004.02.13
Не могу разобраться с графиками


3-38691
Set
2004-01-23 16:37
2004.02.13
Подключить базу, которая на другом компьютере


1-38851
Натуся
2004-02-01 23:23
2004.02.13
Плюс один месяц


4-39127
MScorp
2003-12-10 15:42
2004.02.13
Перехватка сообщения WinPopup