Главная страница
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.016 c
2-1206687638
Thor
2008-03-28 10:00
2008.04.27
Получить список контролов


2-1207168956
fev
2008-04-03 00:42
2008.04.27
Список папок


15-1205227500
Галинка
2008-03-11 12:25
2008.04.27
Как работать из под домена в командной строке


3-1196327588
DenisX
2007-11-29 12:13
2008.04.27
Проблема с кодировкой (с кириллицей)


2-1207142296
Res
2008-04-02 17:18
2008.04.27
цвет пикселя