Вниз
Скачать: 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.014 c
15-1205737121
KSergey
2008-03-17 09:58
2008.04.27
BIOS выдает DMA Error


2-1206937574
Гость
2008-03-31 08:26
2008.04.27
Обращение к объектам по именни.


15-1205433311
Dr.Andrew
2008-03-13 21:35
2008.04.27
Ошибка при инсталляции Delphi 2007! Как исправить?


11-1188392350
Ruzzz
2007-08-29 16:59
2008.04.27
Не компилирует подменяемый system.pas


15-1205543744
No_Dead
2008-03-15 04:15
2008.04.27
Не пойму что с инэтом




   Наверх