purebasic.info

PureBasic forum
Текущее время: Вт окт 23, 2018 1:26 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Удаление в Корзину
СообщениеДобавлено: Пн мар 18, 2013 3:51 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Модифицированный код из Droopy и раздела WinAPI. Удаляет не только файлы, но и папки.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Procedure DeleteToBin(FileName$,Confirm)
  Protected len, *mem, ok
  len = Len(FileName$)
  *mem = AllocateMemory(len + 2)
  If *mem
    If FileSize(FileName$) >= 0 ;Если это файл
      PokeS(*mem,FileName$)
    ElseIf FileSize(FileName$) = -2 ;Если это папка
      PokeS(*mem,FileName$)
      PokeB(*mem+len+1,0)
      PokeB(*mem+len+2,0)
    Else
      FreeMemory(*mem)
      ProcedureReturn #False
    EndIf
  Else
    FreeMemory(*mem)
    ProcedureReturn #False
  EndIf
  SHFileOp.SHFILEOPSTRUCT
  SHFileOp\pFrom=*mem
  SHFileOp\wFunc=#FO_DELETE
  SHFileOp\fFlags=#FOF_ALLOWUNDO|#FOF_SILENT
  If Confirm = 0
    SHFileOp\fFlags = SHFileOp\fFlags|#FOF_NOCONFIRMATION
  EndIf
  FreeMemory(*mem)
  ok = SHFileOperation_(SHFileOp)
  If ok = 0
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Если Confirm равен 0, удаление будет без предупреждения, иначе будет предупреждение.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 2:22 pm 
Не в сети
студент
Аватар пользователя

Зарегистрирован: Ср окт 09, 2013 2:16 pm
Сообщений: 2
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Прежде чем публиковать код, стоило бы проверить его на отсутствие ошибок.

_________________
Тут нет никакой фортепьян!!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 2:28 pm 
Не в сети
профессор

Зарегистрирован: Пн янв 03, 2011 4:27 pm
Сообщений: 412
Благодарил (а): 5 раз.
Поблагодарили: 17 раз.
Пункты репутации: 0
Фортепьян, что за ошибку у тебя выдает, стоит ли Droopy?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 2:36 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Тут друпи не используется

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 2:42 pm 
Не в сети
доцент

Зарегистрирован: Сб янв 19, 2013 9:48 am
Сообщений: 34
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
*mem = AllocateMemory(len)

PokeB(*mem+len+2,0)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 3:20 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Все правильно. После имени должно быть два нулевых символа.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 3:58 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Никита Однороб писал(а):
Все правильно. После имени должно быть два нулевых символа.

При чём здесь нулевые символы, эти нулевые символы должны находиться в пределах выделенной памяти, а не за её пределами.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:04 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
И как я сразу не заметил? Перед постингом проверял, в ФМ работает както :?

Спасибо, не понял сразу. Исправил код

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:26 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1700
Откуда: Алматы
Благодарил (а): 15 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
в друпи-теме на буржуйском форуме отпиши :) пусть добавит :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:30 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Никита Однороб писал(а):
И как я сразу не заметил?
Purifier для чего нужен?
Включи его по умолчанию для новых проектов и таких ошибок не будет.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:44 pm 
Не в сети
студент
Аватар пользователя

Зарегистрирован: Ср окт 09, 2013 2:16 pm
Сообщений: 2
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Никто не видит ошибку? Память не освобождается!

_________________
Тут нет никакой фортепьян!!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:47 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
А это что?
Цитата:
FreeMemory(*mem)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:53 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Фортепьян писал(а):
Никто не видит ошибку?

Да, одного FreeMemory, нехватает.
Никита Однороб писал(а):
А это что?

Нехватает между 12 и 13 строкой.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 4:58 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Блин, хоть убейте не вижу, почему не хватает :) Память выделяется один раз, значит один раз освободить надо. Приду домой внимательнее посмотрю

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Удаление в Корзину
СообщениеДобавлено: Ср окт 09, 2013 5:06 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Никита Однороб писал(а):
не вижу, почему не хватает
потому что
Код:
1
ProcedureReturn #False


Вызови свою процедуру несколько тысяч раз, потом увудишь.

_________________
.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB