1. Куча / Говнокод #26593

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    procedure TForm1.WMDropFiles(var Msg: TMessage);
    var
      I, Amount, Size: Integer;
      Filename: String;
      Ctrl:TControl;
      P:TPoint;
    begin
      if MessageBox(Handle, 'Внимание! Выбранные файлы будут БЕЗВОЗВРАТНО удалены. Продолжить?','Треш-угар', MB_ICONEXCLAMATION or MB_YESNO) <> ID_YES then Exit;
      GetCursorPos(P);
      Amount := DragQueryFile(Msg.WParam, $FFFFFFFF, @Filename[1], 255);
      for i := 0 to (Amount - 1) do
      begin
        Size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
        SetLength(FileName, Size+1);
        DragQueryFile(Msg.WParam, I, @Filename[1], Size);
        SetLength(FileName, StrLen(PChar(FileName)));
        Ctrl:=FindDragTarget(P, False);
        CleanFile(FileName);
      end;
      DragFinish(Msg.WParam);
    end;
    
    procedure TForm1.CleanFile(FileName:string);
    var
      hFile:THandle;
      Size:DWORD;
      BW:DWORD;
      I:Integer;
      P:Pointer;
      NewName, Fname :string;
    begin
      trEmpty.SendToBack;
      trFull.BringToFront;
      hFile:=CreateFile(PChar(FileName), GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
      if hFile=INVALID_HANDLE_VALUE then
      exit;
      try
        Size:=GetFileSize(hFile,nil);
        P:=AllocMem(Size);
        SetFilePointer(hFile, 0, nil, FILE_BEGIN);
        //for I:=0 to Size=1 do
        //begin
        //end;
        WriteFile(hFile, P^, Size, BW, nil);
        CloseHandle(hFile);
      finally
        CloseHandle(hFile);
      end;
      FName:=ExtractFileName(FileName);
      NewName:=StrUtilsEx.RandomStr([rtLowerCase, rtUpperCase], Length(FName));
      NewName:=ExtractFilePath(FileName)+FName;
      MoveFile(PChar(FileName), PChar(NewName));
      DeleteFile(PChar(NewName));
      trFull.SendToBack;
      trEmpty.BringToFront;
    end;
    
    end.

    Кхе-кхе-кхе, апчхичхоу!

    Запостил: KOPOHABuPYC, 21 Апреля 2020

    Комментарии (3) RSS

    • Ой-ёе, это я запостил?
      Ответить
    • Стертор?
      Не нужно выделять память. Просто вызови CreateFile с флагом GENERIC_WRITE, и файл занулится системой. Удалять нужно только после зануления всех файлов, чтобы не нарушать структуру блоков.
      Ответить
      • Стертор- это лишь один из симптомов.

        p.s. к вышеобозначенной лепнине не имею никакого отношения.
        Ответить

    Добавить комментарий