Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизОбрезка файла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c