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

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

Delphi 2005, проблема с TStream [D2005, XP]


Страницы:   1 2

Джованни ©   (2014-02-11 21:22:00) 

Доброг овремени суток, уважаемые.
Возникла проблема с TStream, а именно - необходимо удалить кусок данных в произвольном месте потока.

Вот, как пытаюсь реализовать идею:

procedure ChangeString(Source: TStream; Position, Count, Length: Int64; Data: WideString);
var
 Buffer: array [0..BufMax] of byte;
 readfrom, writeto, red, APos, ASize : int64;
begin
try
 APos := Position;
 ASize := Source.Size;
while APos > 0 do
begin
 Source.Seek(Count, soFromCurrent);
 Source.WriteBuffer(Buffer[0], BufMax);
 Inc(APos);
 Source.Position := APos - Length;
 Source.Seek(Count, soFromCurrent);
 Source.ReadBuffer(Buffer[0], BufMax);
end;
finally
end;
end;

Объясню на пальцах:
есть массив байт:
000000
001110
000000

Необходимо от позиции третьей слева единицы скопировать байты в буфер (Но не во второй TMemoryStream).
Затем с позиции первой единицы слева начать запись иных байт (не из буфера).
Затем поставить позицию в файле в конец новых записанных байт и прочитать туда же данные из ранее записанного буфера.

Приведенный код кстати кажется пишет в буфер (во всяком случае, ошибок не возникало), но не справляется со своей задачей.

ВРоде и алгоритм есть, но реализовать никак не осилю.
Буду благодарен любой помощи и правкам моего "кода".


MBo   (2014-02-12 08:19:00) [21]

Я не понял, что нужно сделать. Объяснение на пальцах не согласуется с заявленной целью "удалить кусок данных"

Может, стоит показать на примере массива abcdefghijklmn и 'иных байтов' 0123456


Джованни   (2014-02-11 21:35:00) [22]

Rouse_ извините, просто браузер выдал ошибку из-за интернета и я подумал, что сообщение не опубликовалось, а проверить не сообразил.
Конечно учту это правило)


Rouse_   (2014-02-11 21:33:00) [23]

Не нужно делать дубли веток, тем более с разными никами. (на будущее..)


Страницы:   1 2

Наверх

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