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

Вниз

Обрезка файла   Найти похожие ветки 

 
allucard   (2007-04-17 15:05) [0]

Подкажите как можно удалить часть файла?

Например удалить первые 3743 байт в файла.

Спасибо.


 
Сергей М. ©   (2007-04-17 15:07) [1]

Файл-то большой ?


 
Ega23 ©   (2007-04-17 15:09) [2]

1. MemoryStream.LoadFromFile;
2. MemoryStream.Position := 3743
3. MemoryStream.Read
4. MemoryStream2.Write
5. MemoryStream2.SavetoFile;


Тупо в лоб.


 
MBo ©   (2007-04-17 15:11) [3]

Если поискать, то вполне может оказаться, что еще кого-то волнуют подобные проблемы, например:
http://delphimaster.net/view/2-1176733394/


 
allucard   (2007-04-17 16:21) [4]

Спасибки.


> Сергей М. ©   (17.04.07 15:07) [1]


12кбайт


 
Сергей М. ©   (2007-04-17 16:32) [5]


> allucard   (17.04.07 16:21) [4]


> 12кбайт


Ну эт "децл", как говорит "поколение Пепси")

Тады можно и, к примеру, так:

ms := TMemoryStream.Create;
ms.LoadFromFile(такой-то);
Move(@PByteArray(ms.Memory)[3743], ms.Memory^, ms.Size - 3743);
ms.Size := ms.Size - 3743;
ms.Position := 0;
ms.SaveToFile(оной же);
ms.Free;


 
allucard   (2007-04-18 08:16) [6]


> Сергей М. ©   (17.04.07 16:32) [5]


Всем доброе утречко.

А я могу теперь сделать так, если мне не нужно удалять физически из файла бинарный бред вначале файла, просто его как бы отбросив:

ms := TMemoryStream.Create;
ms.LoadFromFile(такой-то);
Move(@PByteArray(ms.Memory)[3743], ms.Memory^, ms.Size - 3743);
ms.Size := ms.Size - 3743;
ms.Position := 0;
StringList:= TStringList.Create;
StringList.LoadFromStream(ms);
ms.Free;
StringList.Delimiter := " ";
StringList.DelimitedText := StringList.Text;
for i := StringList.Count - 1 downto 0 do if StringList[i] = "" then StringList.Delete(i);
Memo1.Lines := StringList;
StringList.Free;
?


 
allucard   (2007-04-18 08:27) [7]


> Сергей М. ©   (17.04.07 16:32) [5]


> Move(@PByteArray(ms.Memory)[3743], ms.Memory^, ms.Size -  3743);

ms.Memory - такого нет.


 
Сергей М. ©   (2007-04-18 08:31) [8]


> ms.Memory - такого нет.
>


Как это нет ?)

А это что по-твоему (цитата из станд.справки):

Delphi Object and Component Reference
TMemoryStream properties
..

Derived from TCustomMemoryStream

Memory

Derived from TStream

Position
Size

??


 
allucard   (2007-04-18 08:34) [9]


> Сергей М. ©   (18.04.07 08:31) [8]

Его нет, когда вводишь внутри @PByteArray(ms.Memory)[3743],
пишет Variable required.


 
allucard   (2007-04-18 09:07) [10]

Что неправильного в параметрах Move, что ему не нравится?


 
Сергей М. ©   (2007-04-18 09:17) [11]

Move((@PByteArray(ms.Memory)[3743])^, ms.Memory^, ms.Size -  3743);


 
allucard   (2007-04-18 10:08) [12]


> Сергей М. ©   (18.04.07 09:17) [11]

как теперь поменять все биты $00 на $20.

for i:= 0 to ms.Size do
begin
ms.Position := i;

...и на этом мои познания закончились.
Подскажите как дальше?


 
Сергей М. ©   (2007-04-18 10:13) [13]


> allucard   (18.04.07 10:08) [12]


with ms do
for i := to Size-1 do
  if PByteArray(Memory)[i] = 0 then
    PByteArray(Memory)[i] = $20


 
allucard   (2007-04-18 10:14) [14]


> Сергей М. ©   (18.04.07 10:13) [13]

Спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
15-1176012403
Pazitron_Brain
2007-04-08 10:06
2007.05.06
Подскажите Jazz музыканта


2-1176552227
..::KraN::..
2007-04-14 16:03
2007.05.06
System Tray и Список последних файлов


2-1176807939
allucard
2007-04-17 15:05
2007.05.06
Обрезка файла


15-1176187069
Calibr
2007-04-10 10:37
2007.05.06
Температура ЦПУ


15-1175848083
Fredy314
2007-04-06 12:28
2007.05.06
Отправка E-mail через неблокирующие сокеты