Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.04 c
15-1175899537
Riply
2007-04-07 02:45
2007.05.06
Спец надзор за спец контролем :)


15-1176086186
Slider007
2007-04-09 06:36
2007.05.06
С днем рождения ! 7 апреля


15-1175926571
Pazitron_Brain
2007-04-07 10:16
2007.05.06
Причины поломки компьютера


11-1158513222
skillcoder
2006-09-17 21:13
2007.05.06
[Глюк] Прорисовка контролов в левом верхнем углу


2-1176815726
ppcumax
2007-04-17 17:15
2007.05.06
Как удалить первую строку из Memo?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский