안녕하세요.
파일 스트림 통째로 복사하거나 Write Read해서 사용하는것을 하다가.
특정 구간을 삭제하고 싶습니다.
그런데 아래 코드가 제대로 동작하지 않는것 같습니다.
0번부터 90바이트 까지 삭제 할때 어떻게 해야 할까요?
또 전체크기의 -90 에서 끝까지 삭제할때는요?
procedure StreamDelete( var AStream: TMemoryStream; AFrom, ATo: integer );
var
TmpStream: TMemoryStream;
begin
TmpStream := TMemoryStream.Create;
AStream.Position := 0; // 위치 0으로 이동.
TmpStream.CopyFrom( AStream, 0 ); // 0위치 부터 모두 복사.
AStream.Clear;
TmpStream.Seek( 0, 0 ); // 0에서 순차 앞으로.
AStream.CopyFrom( TmpStream, AFrom );
TmpStream.Seek( ATo, 0 );
AStream.CopyFrom( TmpStream, TmpStream.Size-ATo );
AStream.Position := 0;
TmpStream.Free;
end;
|