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

Вниз

Переполнение буфера?   Найти похожие ветки 

 
deras ©   (2008-04-03 12:49) [0]

Удаляю файлы, пути к которым прописаны в текстовом файле. Удаление идет в цикле "пока не закончиться список". Удяляются файли с помощью ф-ций (где-то нашел)
procedure CreateBuffer( Names : array of string; var P : TBuffer );
var I, J, L : Integer;
begin
 for I := Low( Names ) to High( Names ) do
   begin
     L := Length( P );
     SetLength( P, L + Length( Names[ I ] ) + 1 );
     for J := 0 to Length( Names[ I ] ) - 1 do
       P[ L + J ] := Names[ I, J + 1 ];
     P[ L + J ] := #0;
   end;
 SetLength( P, Length( P ) + 1 );
 P[ Length( P ) ] := #0;
end;

function TFMain._DeleteFiles( Handle : HWnd; Names : array of string; ToRecycle : Boolean ) : Integer;
var
 SHFileOpStruct : TSHFileOpStruct;
 Src : TBuffer;
begin
 CreateBuffer( Names, Src );
 with SHFileOpStruct do
   begin
     Wnd := Handle;
     wFunc := FO_DELETE;
     pFrom := Pointer( Src );
     pTo := nil;
     fFlags := FOF_NOCONFIRMATION; //на все запросы отвечает "yes to all"
     if ToRecycle then fFlags := FOF_ALLOWUNDO;
     fAnyOperationsAborted := False;
     hNameMappings := nil;
     lpszProgressTitle := nil;
   end;
 Result := SHFileOperation( SHFileOpStruct );
 Src := nil;
end;


Если количество удаляемых файлов невелико, то все ок. Но когда много - тогда выдает ошибку "Invalid pointer operation". Насколько я понимаю, происходит переполнение буфера из-за того, что начинается процес удаления многих файлов одновременно.
Как можно исправить ситуацию?


 
Reindeer Moss Eater ©   (2008-04-03 12:53) [1]

тогда выдает ошибку "Invalid pointer operation".

И где в нем хоть намек на "буфер" или "переполнение" ?
Мы говорим "ленин" - подразумеваем "партия" ?


 
Kolan ©   (2008-04-03 12:54) [2]

Обычный DeleteFile+TStringList чем не устроил?


 
clickmaker ©   (2008-04-03 12:59) [3]

а что такое TBuffer?


 
deras ©   (2008-04-03 13:02) [4]

был готовый код. Надо внести изменения.

Попробую с DeleteFile...

Спасибо


 
Игорь Шевченко ©   (2008-04-03 13:42) [5]

Что такое TBuffer ?


 
Johnmen ©   (2008-04-03 14:04) [6]


> был готовый код. Надо внести изменения.

Т.е. чтобы за тебя ещё и изменения внесли в тупо стыренный код?



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.012 c
9-1169568586
FireMan_Alexey
2007-01-23 19:09
2008.04.27
Kak sdlatb dvigenie vdolb steni (ploskosti)!


2-1207164129
Gringoire
2008-04-02 23:22
2008.04.27
Часы с отображением дня недели и названием месяца.


15-1204816041
Сатир
2008-03-06 18:07
2008.04.27
Марко Кэнту опубликовал открытое письмо...


15-1205404261
sds
2008-03-13 13:31
2008.04.27
Шрифты


15-1204642920
Real
2008-03-04 18:02
2008.04.27
Web editor (open source)