Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Как удалить файлы из корзины

Советы » Файлы » Как удалить файлы из корзины

program

del; uses

ShellApi; //function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall; var

T: TSHFileOpStruct; P: string

; begin

P := 'C:WindowsSystemEL_CONTROL.CPL'; with

T do

begin

Wnd := 0; wFunc := FO_DELETE; pFrom := Pchar(P); fFlags := FOF_ALLOWUNDO end

; SHFileOperation(T); end

.

Восстановление

Есть некоторые причуды, и Вы должны помнить о следующем:

  • Дайте полный путь для каждого файла. Не доверяйте текущей директории, даже если Вы ее изменили непосредственно перед вызовом функции. Функция WinAPI SHFileOperation не достаточно "умная" для использования текущей директории при отсутствии информации о предыдущей директории (для осуществления функции восстановления). Так, даже если используете флаг FOF_ALLOWUNDO, это не восстановит удаленные файлы из корзины, поскольку функция ничего не знает о предыдущем месторасположении файлов, и, таким образом, не сможет их восстановить файлы из корзины в их оригинальное месторасположение. Она просто удалит файлы из текущей директории.
  • Microsoft скорректировала документацию о члене pFrom. Новая редакция сообщает о подробностях работы в пакетном режиме: необходимо разделить имя каждого файла символом NULL (#0) и добавить к концу списка двойной символ NULL. Терминатор из двух символов NULL необходим в любом случае: работаете вы с одним файлом, или же используете пакетный режим. Иногда это работает и без терминатора, но чаще нет. Это связано с тем, что функции при работе с памятью считывает данные из памяти, располагающейся до терминатора, а поскольку длина строки может не совпадать с распределенной памятью, то данные, находящиеся после терминатора, просто не обрабатываются.

Пример правильного кодирования:

var

FileList: string

; FOS: TShFileOpStruct; begin

FileList := 'c:delete.me'#0'c:windows emp.$$$'#0#0; { если Вы используете имена файлов в строковых переменных: } FileList := Filename1 + #0 + Filename2 + #0#0; FOS.pFrom := PChar(FileList); // бла бла бла end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com