Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Как при использовании 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 вся ветка

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.041 c
2-1128592873
leonidus
2005-10-06 14:01
2005.10.30
ANSI код символа EOF


14-1128687708
VictorT
2005-10-07 16:21
2005.10.30
Help. Заголовки gdi+


14-1128709701
default
2005-10-07 22:28
2005.10.30
"Живое" пиво, срок хранения три дня


14-1128863271
cyborg
2005-10-09 17:07
2005.10.30
Помогите исправить графрежим в Мандрейк Линукс 9


2-1128164730
Yura32
2005-10-01 15:05
2005.10.30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский