Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обрезка файла [D7, XP]


allucard ©   (2007-04-17 15:05:00) 

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

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

Спасибо.


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


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

Спасибо.


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


> 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:08:00) [3]


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

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

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

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


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

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


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

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


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


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

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


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


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


Как это нет ?)

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

Delphi Object and Component Reference
TMemoryStream properties
..

Derived from TCustomMemoryStream

Memory

Derived from TStream

Position
Size

??


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


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


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

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


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


> Сергей М. ©   (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;
?


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


> 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-17 16:21:00) [11]

Спасибки.


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


12кбайт


MBo   (2007-04-17 15:11:00) [12]

Если поискать, то вполне может оказаться, что еще кого-то волнуют подобные проблемы, например:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1176733394&n=18


Ega23   (2007-04-17 15:09:00) [13]

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


Тупо в лоб.


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо