Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
2-1207296180
Свой
2008-04-04 12:03
2008.04.27
Какой поис быстрее работает?


3-1196328581
ari_9
2007-11-29 12:29
2008.04.27
хранение пользовательских настроек программы в БД. идеология


2-1206948837
IntruderLab
2008-03-31 11:33
2008.04.27
MDI форма


15-1203519350
Marser
2008-02-20 17:55
2008.04.27
USB Flash-based дистрибутив Linux


11-1173843627
ryslan56
2007-03-14 06:40
2008.04.27
Не работают библиотеки




   Наверх