Главная страница
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.015 c
2-1176416482
Могот
2007-04-13 02:21
2007.05.06
MediaPlayer прикол со звуком в видео


3-1171435004
DimonS
2007-02-14 09:36
2007.05.06
Обновление БД Access


2-1176530991
kyn66
2007-04-14 10:09
2007.05.06
Различие между двумя типами записей


15-1176133542
TUser
2007-04-09 19:45
2007.05.06
Microsoft назвала слабое место Windows Vista


1-1173444096
ElectriC
2007-03-09 15:41
2007.05.06
Липкие диалоги