Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
3-38746
VladimirKVT
2004-01-21 07:58
2004.02.13
Как правильно и/или лучше сделать откат?


1-38905
CanCan
2004-02-04 21:47
2004.02.13
Перебор!


3-38743
DelphiNew
2004-01-21 13:50
2004.02.13
список таблиц


1-38958
Andrey V
2004-02-03 20:03
2004.02.13
Минимизация


1-38879
td
2004-02-03 19:50
2004.02.13
взаимные ссылки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский