Форум: "WinAPI";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизКак при использовании IStorage удалить из хранилища бинарник Найти похожие ветки
← →
Alisher (2005-08-24 07:41) [0]Кагда удаляю бинарные данные из хранилища, они удаляются, но файл хранилища остается таких же размеров. Выходит, что он никогда не уменьшается. Кто знает, подскажите.
← →
Leonid Troyanovsky © (2005-08-24 11:00) [1]
> Alisher (24.08.05 07:41)
> Кагда удаляю бинарные данные из хранилища, они удаляются,
> но файл хранилища остается таких же размеров. Выходит, что
> он никогда не уменьшается. Кто знает, подскажите.
IStream.SetSize ?
--
Regards, LVT.
← →
Rouse_ © (2005-08-24 12:17) [2]Все верно, сжимать вот так:
class function TGSCustomStorage.ClassSupport(const AFileName: String;
Change: Boolean): HRESULT;
var
Src, Dest: IStorage;
begin
Result := S_FALSE;
if not FileExists(AFileName) then Exit;
Result := StgOpenStorage(StringToOleStr(AFileName), nil,
STGM_READ or STGM_SHARE_EXCLUSIVE, nil, 0, Src);
if Result = S_OK then
try
Result := StgCreateDocfile(StringToOleStr(String(AFileName) + "~"),
STGM_READWRITE or STGM_SHARE_EXCLUSIVE or STGM_CREATE, 0, Dest);
if Result = S_OK then
try
Result := Src.CopyTo(0, nil, nil, Dest);
finally
Dest := nil;
end;
finally
Src := nil;
if Change then
begin
if Result = S_OK then
if not DeleteFile(AFileName) then
Result := S_FALSE
else
RenameFile(AFileName + "~", AFileName);
end
else
begin
if Result = S_OK then
if not DeleteFile(AFileName + "~") then
Result := S_FALSE
end;
end;
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c