RemoveDir — Функция Delphi

Копирование и удаление файлов в Delphi

В самом простом случае вопрос копирования файлов очень прост (хотя поступило много пожеланий рассказать именно об этом)! Для этого достаточно посмотреть в хелп по Delphi :))

В Delphi есть функция CopyFile. Вот ее описание из хелпа
BOOL CopyFile(
LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists );

Параметры передаваемые в эту функцию:
Указатель на имя существующего файла (нуль терминированная строка т.е. тип PChar! )
Указатель на имя файла, который будет создан/перезаписан после копирования (нуль терминированная строка т.е. тип PChar! )
Если этот параметр True и файл с таким именем уже существует, то функция вернет False. Если же файл, с именем указанным во втором параметре существует и в качестве третьего параметра передан False — то функция перезапишет файл и благополучно завершится.
Приведу небольшой пример использования этой функции. Создайте на диске C: файл ‘1.txt’, а на форму поставьте кнопку:

procedure TForm1.Button1Click(Sender: TObject);
begin
if CopyFile(‘c:1.txt’,’c:2.txt’,true) then
ShowMessage(‘Файл успешно скопирован!’)
else ShowMessage(‘Неудача!’);
end;

Для того, чтобы точнее узнать при возникновении ошибки, что же все таки произошло, надо воспользоваться функцией GetLastError, которая возвращает код последней ошибки (формат DWORD). Теперь мы немного изменим пример:

procedure TForm1.Button1Click(Sender: TObject);
begin
if CopyFile(‘c:1.txt’,’c:2.txt’,true) then
ShowMessage(‘Файл успешно скопирован!’)
else
ShowMessage(‘Ошибка! Вот ее код: ‘+IntToStr(GetLastError));
end;

Таким образом нажав второй раз на кнопку мы получим сообщение: «Ошибка! Вот ее код: 80». Это говорит нам, что файл существует.
Коды всех ошибок можно легко найти в хелпе.

Для углубления рассматриваемого вопроса приведу пример копирования файлов с помощью файлового потока (TFileStream). В приведенной пользовательской функции введены два дополнительных параметра From и Count, которые указывают, соответственно, с какого и по какой байт нужно копировать файл. Если необходимо скопировать весь файл, то необходимо передать нули. Вот код этой функции:

function MyCopyFile( InFile,OutFile: String; From,Count: Longint ): Longint;
var InFS,OutFS: TFileStream;
begin
InFS := TFileStream.Create( InFile, fmOpenRead );//создаем поток
OutFS := TFileStream.Create( OutFile, fmCreate );//создаем поток
InFS.Seek( From, soFromBeginning );//перемещаем указатель в From
Result := OutFS.CopyFrom( InFS, Count );
InFS.Free;//освобождаем
OutFS.Free;//освобождаем
end;

Для удаления файлов в Delphi так же предусмотрена специальная процедура DeleteFile. В качестве параметра, передаваемого в функцию, выступает строка типа PChar, указывающая имя файла, который нужно удалить. Сразу предлагаю Вам простой пример на использование этой функции:

procedure TForm1.Button1Click(Sender: TObject);
begin
if DeleteFile(‘c:2.txt’) then
ShowMessage(‘Файл успешно удален!’)
else ShowMessage(‘Ошибка! Вот ее код: ‘+IntToStr(GetLastError));
end;

Чтобы удалить пустую директорию с помощью Delphi достаточно обратиться к функции RemoveDir.
function RemoveDir(const Dir: string): Boolean;

Эта функция возвращает True если директория, указанная в единственном параметре, передаваемом в функцию, успешно удалена, в противном случае функция возвратит False.

Часто возникает необходимость удалить непустую папку, содержащую не только файлы, но и другие вложенные папки. Для этого была написана пользовательская функция, удаляющая папку со всеми файлами и поддиректориями. Вот она:

function MyRemoveDir(sDir : String) : Boolean;
var iIndex : Integer;
SearchRec : TSearchRec;
sFileName : String;
begin
Result := False;
sDir := sDir + ‘*.*’;
iIndex := FindFirst(sDir, faAnyFile, SearchRec);
while iIndex = 0 do
begin
sFileName := ExtractFileDir(sDir)+»+SearchRec.Name;
if SearchRec.Attr = faDirectory then
begin
if (SearchRec.Name <> » ) and (SearchRec.Name <> ‘.’) and
(SearchRec.Name <> ‘..’) then
MyRemoveDir(sFileName);
end else
begin
if SearchRec.Attr <> faArchive then
FileSetAttr(sFileName, faArchive);
if NOT DeleteFile(sFileName) then
ShowMessage(‘Could NOT delete ‘ + sFileName);
end;
iIndex := FindNext(SearchRec);
end;
FindClose(SearchRec);
RemoveDir(ExtractFileDir(sDir));
Result := True;
end;

А сейчас пример использования этой функции:
procedure TForm1.Button1Click(Sender: TObject);
begin
if MyRemoveDir(‘C:testDir’) then
ShowMessage(‘Директория успешно удалена’)
else ShowMessage(‘Не получается удалить директорию’);
end;

Общие замечания по данной теме

Перед копированием или удалением файлов всегда проверяйте его наличие функцией FileExists:

if FileExists(‘c:1.txt’) then
if CopyFile(‘c:1.txt’,’c:2.txt’,true) then
ShowMessage(‘Файл успешно скопирован!’)
Чтобы использовать в функциях CopyFile и DeleteFile имена файлов полученные с помощью, например, OpenDialog, надо из привести к типу PChar:

if CopyFile(Pchar(OpenDialog1.FileName),Pchar(SaveDialog1.FileName),true) then .
Всегда следите за именами файлов, используемых в функциях. Обращайте внимание на абсолютные и относительные пути. Из-за этого часто возникают ошибки, которые сложно отследить!

Ну вот наверно и все, что я хотел бы рассказать Вам о копировании и удалении в Delphi.

Работа с директориями (папками) в Дельфи

В этой статье я постараюсь познакомить Вас с некоторыми стандартными функциями для работы с директориями. И еще приведу несколько пользовательских функций и примеры их использования. Также рассмотрен вопрос вызова диалога выбора директории.

Для начала начнем с простой функции для создания новой папки. Общий вид функции такой:

То есть если папка успешно создана функция возвращает true. Сразу же простой пример ее использования:

При нажатии на кнопку программа пытается создать папку с именем TestDir на диске C: и если попытка увенчалась успехом, то выводится соответствующее сообщение. Следует отметить, что если вы не указываете имя диска, на котором хотите создавать папку, то функция будет создавать папку в той же директории, где находится сама программа.

приведут к одному и тому же результату.

Теперь рассмотрим функцию для удаления папок. Ее объявление выглядит так:

Сразу же хочу предупредить, что данная функция способна удалять только пустые папки, и если там что-нибудь будет, то произойдет ошибка! Но выход есть. Здесь нам на помощь придет пользовательская функция с простым названием MyRemoveDir. Вот описание функции:

Копируете это все в Вашу программу, а затем эту функцию можно вызвать например так:

Теперь маленько отстранимся от непосредственной работы с папками и рассмотрим волнующий многих вопрос. Как вызвать диалог выбора папки (как при установке программ)?? ПРОСТО.

Подключаем в uses модуль Filectrl.pas (то есть uses FileCtrl;). Теперь ставим на форму еще кнопочку (чтобы не путаться :) и пишем такой код:

При выборе директории в заголовке формы отобразиться ее название!

Теперь рассмотрим следующую процедуру. К примеру Вам надо создать папку Dir1 по адресу: C:\MyDir\Test\Dir1, но при этом папок MyDir и Test на Вашем компьютере не существует. Функция CreateDir здесь не сработает, поэтому воспользуемся процедурой ForceDirectories. Ее общий вид таков:

Пример ее использования (как всегда я поставил на форму новую кнопку, а там написал)

Ну и напоследок приведу функцию для проверки: существует ли директория или нет. Ее общий вид такой:

Если директория указанная в параметре Name существует — то функция возвратит true.

Надеюсь, что помог Вам описанием данных функций и процедур. Сразу хочется дать совет: почаще заглядывайте в HELP, там много интересной и полезной информации!

RemoveDir — Функция Delphi

1) способ удаления из Delphi

ВНИМАНИЕ. ОЧЕНЬ желательно указывать ПОЛНЫЙ путь к папке!

p.s. кстати к файлам тоже желательно указывать ПОЛНЫЙ путь

2) способ через BAT файл:

Serge_Bliznykov
Посмотреть профиль
Найти ещё сообщения от Serge_Bliznykov

Может этот пример чем поможет.
Удаляет все в папке.

02.07.2011, 20:57 #15
Aliens_wolfs
Посмотреть профиль
Найти ещё сообщения от Aliens_wolfs
03.07.2011, 17:30 #16

да уж. народ лёгких путей не ищет. иногда и хелп полезно почитать:

16.02.2012, 17:33 #17

да уж. народ лёгких путей не ищет. иногда и хелп полезно почитать:

16.02.2012, 18:16 #18
16.02.2012, 19:04 #19
16.02.2012, 19:52 #20
в хелпе сказано версия 2010 и выше

ничего себе у Вас подходы к «лёгким путям»!

Приведённый в теме код прекрасно будет работать под ЛЮБОЙ версией Delphi (у меня, например, Delphi 5).

впрочем, если у кого-то из тех, кто наткнётся на данную тему будет Delphi версии 2010 (или старше), ему Вас совет будет полезен!

RemoveDir Routine

Description

(Please provide a description in your own words. It is illegal to use the wording from the Delphi Help.)

Technical Comments

(Known issues / Documentation clarifications / Things to be aware of)

Examples

(Please provide links to articles/source code that show how to use this item.)

See Also

(Please provide links to items specifically related to this item.)

User Comments/Tips

(Please leave your name with your comment.)

System.SysUtils.RemoveDir

Properties

Description

Deletes an existing empty directory.

Call RemoveDir to remove the directory specified by the Dir parameter. The return value is True if a new directory was successfully deleted, False if an error occurred. The directory must be emptied before it can be successfully deleted.

Note: When working with symlinks, there are some special cases to consider because of how symlinks are implemented on different platforms. On Windows, RemoveDir can only delete a symbolic link from a directory, regardless if the directory link is broken or not.

RemoveDir — Функция Delphi

Очень удобный класс для работы со списком объектов. Вот только не до конца понятный. Справка Delphi вводит в заблуждение, возникают вопросы. Выдержка из Help‘а:

Type Visibility Source Unit Parent
function public
Remove method (TObjectList)

Removes a specified object from the list and (if OwnsObjects is true) frees the object.

Delphi syntax:
function Remove(AObject: TObject): Integer;

C++ syntax:
HIDESBASE int __fastcall Remove(System::TObject* AObject);

Description
Call Remove to delete a specific object from the list when its index is unknown. The value returned is the index of the object in the Items array before it was removed. If the specified object is not found on the list, Remove returns –1. If OwnsObjects is true, Remove frees the object in addition to removing it from the list.

After an object is deleted, all the objects that follow it are moved up in index position and Count is decremented. If an object appears more than once on the list, Remove deletes only the first appearance. Hence, if OwnsObjects is true, removing an object that appears more than once results in empty object references later in the list.

To use an index position (rather than an object reference) to specify the object to be removed, call Delete.

To remove an object from the list without freeing it, call Extract.

Delete method (TList)

Removes the item at the position given by the Index parameter.

Delphi syntax:
procedure Delete(Index: Integer);

C++ syntax:
void __fastcall Delete(int Index);

Description
Call Delete to remove the item at a specific position from the list. The index is zero-based, so the first item has an Index value of 0, the second item has an Index value of 1, and so on. Calling Delete moves up all items in the Items array that follow the deleted item, and reduces the Count.

To remove the reference to an item without deleting the entry from the Items array and changing the Count, set the Items property for Index to nil (Delphi) or NULL (C++).

Note: Delete does not free any memory associated with the item. To free the memory that was used to store a deleted item, set the Capacity property.

Обратите внимание, что описание метода Delete дается для предка класса TObjectListTList, что добавляет путаницы. Еще примем во внимание примечание (Note) в описании метода и запутаемся окончательно.

Я обратился к этой теме по простой причине: у меня были проблемы с этими двумя методами, я не знал, какой из них использовать в определенных случаях.

Лучший способ разобраться в работе — обратиться к исходникам. Так и поступим.

Итак, что мы видим в исходниках метода Remove:

То есть вызывается одноименный метод предка TList:

Здесь, как мы видим, вызывается метод Delete, из чего можно заключить, что никакой разницы между методами Remove и Delete (кроме типа аргумента) нет. Но мы не будем останавливаться на этом, а пойдем дальше и посмотрим устройство метода TList.Delete:

Тут вызывается метод Notify, в котором, как мы сейчас убедимся, кроется вся хитрость класса TObjectList:

Так, мы убедились, что если свойство OwnsObjects объекта класса TObjectList установлено в True, то оба метода: и Delete, и Remove приводят к освобождению объекта, удаляемого из списка. Если OwnsObject = False, ни один из них не освобождает объект. По крайней мере я пришел к этому выводу именно так, через изучение исходников.

Для удаления объекта из списка без его освобождения необходимо использовать метод Extract.

Позже я нашел в справке подтверждение своих мыслей:

TObjectList

TObjectList maintains a list of (owned) objects.

Типы, функции и процедуры Delphi для работы с файлами.

Содержание:


Процедуры и функции для работы с файлами.


Тип TSearchRec.


Тип TWin32FindData.


Процедуры и функции для работы с файлами

Ниже приведена таблица, содержащая стандартные процедуры и функции Delphi7 для работы с файлами и их краткое описание. Функции в таблице расположены в алфавитном порядке.

Связывает имя внешнего дискового файла с файловой переменной.

procedure AssignFile(var F; FileName: string);

F — имя файловой переменной
FileName — имя файла

Изменяет текущую директорию.

procedure ChDir(const S: string); overload;
procedure ChDir(P: PChar); overload;

Разрывает связь между файловой переменной и внешним дисковым файлом.

procedure CloseFile(var F);

Создает новую директорию.

function CreateDir(const Dir: string): Boolean;

Удаляет файл с диска.

function DeleteFile(const FileName: string): Boolean;

Определяет существует ли указанная директория.

function DirectoryExists(const Directory: string): Boolean;

Возвращает число свободных байт на указанном диске.

function DiskFree(Drive: Byte): Int64;

Drive — номер диска, где 0 = текущий диск, 1 = A, 2 = B . и т.д.

Возвращает размер указанного диска в байтах.

function DiskSize(Drive: Byte): Int64;

Drive — номер диска, где 0 = текущий диск, 1 = A, 2 = B . и т.д.

Возвращает время последней модификации файла (timestamp) в формате операционной системы. Полученное значение может быть преобразовано в формат TDateTime при помощи функции FileDateToDateTime.

function FileAge(const FileName: string): Integer;

Закрывает указанный файл.

procedure FileClose(Handle: Integer);

Создает новый файл.

function FileCreate(const FileName: string): Integer; overload;
function FileCreate(const FileName: string; Rights: Integer): Integer; overload;

Если возвращаемое значение больше 0 функция выполнена успешно и его значение соответствует handle открытого файла. -1 — произошла ошибка открытия файла.
Параметр Rights используется только для Linux. В Windows он игнорируется.

Преобразует значение времени файла (timestamp) из формата операционной системы в TDateTime.

function FileDateToDateTime(FileDate: Integer): TDateTime;

Проверяет существует ли указанный файл.

function FileExists(const FileName: string): Boolean;

Возвращает файловые аттрибуты заданного файла как строку бит. Возвращаемое значение полностью соответствует полю Attr в TSearchRec..

function FileGetAttr(const FileName: string): Integer;

Возвращает время последней модификации файла (timestamp) в формате операционной системы. Используйте её для файла, заданного его handle.

function FileGetDate(Handle: Integer): Integer;

Возвращает TRUE если файл можно открыть только для чтения.

function FileIsReadOnly(const FileName: string): Boolean;

Открывает указанный файл в режиме, заданном при помощи одной из констант File open mode.

function FileOpen(const FileName: string; Mode: LongWord): Integer;

Если возвращаемое значение больше 0 функция выполнена успешно и его значение соответствует handle открытого файла. -1 — произошла ошибка открытия файла.

Читает указанное число байт из файла в буфер. Перед этим файл должен быть открыт при помощи функции FileOpen или FileCreate.

function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;

Handle — хендл файла, возвращаемый функциями FileCreate или FileOpen
Buffer — буфер
Count — размер буфера

Возвращаемое значение — действительное количество полученных байт. Оно может быть меньше размера буфера.

Ищет файл в указанных папках.

function FileSearch(const Name, DirList: string): string;

Name — короткое имя файла
DirList — список директорий для поиска. Для Windows директории для поиска в списке отделяются друг от друга точкой с запятой, а в Linux — двоеточием.

Возвращаемое значение — полное имя файла. Если файл не найден — пустая строка.

Перепозиционирует позицию чтения/записи в открытом файле. Перед этим файл должен быть открыт при помощи функции FileOpen или FileCreate.

function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64;overload;

Handle — хендл файла, возвращаемый функциями FileCreate или FileOpen
Offset — указывает число байт смещения от Origin, куда будет перепозизиционирована точка.
Origin — определяет три варианта позиционирования:
0 — смещение задается относительно начала файла;
1 — смещение задается относительно текущей позиции;
2 — смещение задается относительно конца файла.

Если FileSeek выполнена успешно, она возвращает новую позицию точки чтения/записи; иначе она возвращает -1.

Устанавливает файловые аттрибуты заданного файла.

function FileSetAttr(const FileName: string; Attr: Integer): Integer;

Значение Attr формируется комбинацией соответствующих констант файловых аттрибутов как показано ниже:

Возвращаемое значение — 0; иначе — код ошибки.

Примечание: Значения констант файловых аттрибутов приведены в описании TSearchRec.

Примечание: FileSetAttr доступна только для Windows.

Устанавливаетвремя последней модификации файла (timestamp) в формате операционной системы.

Для Windows:
function FileSetDate(Handle: Integer; Age: Integer): Integer; overload;

Cross-platform:
function FileSetDate(const FileName: string; Age: Integer): Integer; overload;

Handle — handle файла для изменения (Этот синтаксис доступен только для Windows.);
FileName — имя файла;
Age — устанавливаемое время модификации в формате операционной системы. Используйте функцию DateTimeToFileDate для перевод времени из формата TDateTime в формат операционной системы.

Возвращаемое значение — 0; иначе — код ошибки.

Разрешает использовать файл только для чтения.

function FileSetReadOnly(const FileName: string; ReadOnly: Boolean): Boolean;

Записывает содержимое буфера в текущую позицию в файле.

function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;

Handle — хендл файла, возвращаемый функциями FileCreate или FileOpen
Buffer — буфер
Count — число байт, передаваемых файлу из буфера

Возвращаемое значение — действительное количество записаных байт или -1 в случае ошибки.

Освобождает память, выделенную под функцию FindFirst и прерывает последовательность FindFirst/FindNext.

Ищет первый файл с заданными аттрибутами в указанной папке.

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

Path — имя папки и маска имен файлов для поиска, включая wildcard characters. (Например, ‘.\test\*.*’ задает все файлы в текущей папке.)
Attr — аттрибут, указывающий включать в поиск специальные файлы в дополнение к нормальным. Аттрибуты можно комбинировать, складывая значения. Например, (faReadOnly + faHidden).
F — возвращаемый параметр. Результат работы функции.

Возвращаемое значение — 0, если файл найден; иначе — код ошибки.

Возвращает имя следующего файла с параметрами, предварительно заданными функцией FindFirst.

F — возвращаемый параметр. Результат работы функции.

Возвращаемое значение — 0, если файл найден; иначе — код ошибки.

Создает новую папку, включая родительские папки, если они до этого не существовали, и родительские папки.

function ForceDirectories(Dir: string): Boolean;

Возвращает полное имя рабочей папки.

function GetCurrentDir: string;

Возвращает имя рабочей папки.

procedure GetDir(D: Byte; var S: string);

D — номер диска, где 0 = текущий диск, 1 = A, 2 = B, 3 = C . и т.д.
S — возвращаемый параметр. Результат работы процедуры.

Удаляет существующую пустую папку.

function RemoveDir(const Dir: string): Boolean;

Изменяет имя файла.

function RenameFile(const OldName, NewName: string): Boolean

Назначает рабочую папку.

function SetCurrentDir(const Dir: string): Boolean;

Тип TSearchRec

TSearchRec содержит информацию о файле, найденом при помощи функции FindFirst или FindNext.

Тип TSearchRec определяет информацию о файле, найденую путем вызова функции FindFirst или FindNext. Если файл найлен, поля параметров TSearchRec изменяются в соответствии с найденным файлом.

Attr — представляет файловые аттрибуты файла. Проверяйте параметр Attr на следующие константы аттрибутов или их значения чтобы узнать какие аттрибуты назначены данному файлу.

В Windows константы аттрибутов полностью соответствуют файловым аттрибутам DOS.

Наименование Тип
модуль
Описание
AssignFile процедура
System
ChDir процедура
System
CloseFile процедура
System
CreateDir функция
SysUtils
DeleteFile функция
SysUtils
DirectoryExists функция
SysUtils
DiskFree функция
SysUtils
DiskSize функция
SysUtils
File mode константы
System
Используются для открытия и закрытия дисковых файлов.

const fmClosed = $D7B0; // closed file
const fmInput = $D7B1; // reset file (TTextRec)
const fmOutput = $D7B2; // rewritten file (TTextRec)
const fmInOut = $D7B3; // reset or rewritten file (TFileRec)
const fmCRLF = $8; // DOS-style EoL and EoF markers (TTextRec)
const fmMask = $D7B3; // mask out fmCRLF flag (TTextRec)

Эти константы используются в первую очередь в Delphi коде, где поле Mode в TFileRec и TTextRec содержит одно из этих значений.

File open mode константы
SysUtils
Константы режима открытия файла используются для контроля режима доступа к файлу или потоку.

Для Windows:

Эти константы используются для конроля режима совместного доступа при открытии файла или потока.

TFileStream конструктор имеет параметр Mode в котрый вы можете прописать одну из следующих констант:

Константа Описание
fmCreate Если файл уже существует, то он открывается для записи, иначе создается новый файл. В отличие от других констант, которые декларируются в модуле SysUtil, эта константа декларируется в модуле classes.
fmOpenRead Открываетдоступ только для чтения.
fmOpenWrite Открываетдоступ только для записи.
fmOpenReadWrite Открывает доступ для чтения и записи.
fmShareCompat Compatible with the way FCBs are opened. Не используйте этот режим в кросс-платформенных приложениях.
fmShareExclusive Доступ к чтению и записи запрещен.
fmShareDenyWrite Доступ для записи запрещен.
fmShareDenyRead Доступ для чтения запрещен. Не используйте этот режим в кросс-платформенных приложениях.
fmShareDenyNone Открывает полный доступ для других.
FileAccessRights пременная Points to the command-line arguments specified when the application is invoked. Только для Linux. В Windows эта переменная игнорируется.
FileAge функция
SysUtils
FileClose процедура
SysUtils
FileCreate функция
SysUtils
FileDateToDateTime функция
SysUtils
FileExists функция
SysUtils
FileGetAttr функция
SysUtils
FileGetDate функция
SysUtils
FileIsReadOnly функция
SysUtils
FileOpen функция
SysUtils
FileRead функция
SysUtils
FileSearch функция
SysUtils
FileSeek функция
SysUtils
FileSetAttr функция
SysUtils
FileSetDate функция
SysUtils
FileSetReadOnly функция
SysUtils
FileWrite функция
SysUtils
FindClose процедура
SysUtils
FindFirst функция
SysUtils
FindNext функция
SysUtils
ForceDirectories функция
SysUtils
GetCurrentDir функция
SysUtils
GetDir процедура
System
RemoveDir функция
SysUtils
RenameFile функция
SysUtils
SetCurrentDir функция
SysUtils
Константа Значение Описание
faReadOnly 1 Файлы Только для чтения
faHidden 2 Скрытые файлы
faSysFile 4 Системные файлы
faVolumeID 8 Файлы идентификации тома
faDirectory 16 Файлы папок
aArchive 32 Архивные файлы
faSymLink 64 Символьная ссылка
faAnyFile 71 Любые файлы

Примечание:
Константа faReadOnly из модуля SysUtils имеет то же самое имя, что и константа из модуля Db, определенная в типе TFieldAttribute. Если в своих исходниках вы одновременно используете модули SysUtils и Db, то, чтобы исключить неопределенность, необходимо конкретно указывать из какого модуля вы используете значение константы faReadOnly. В Delphi это записывается так: SysUtils.faReadOnly.

Чтобы проверить файл на определенный аттрибут, комбинируйте значение поля Attr с соотвтствующей константой при помощи оператора AND. Если файл имеет этот аттрибут, результат будет больше 0. Например, если найденый файл является скрытым, то следующие выражения дадут значение TRUE:

Time содержит время последнего изменения файла. Оно может быть преобразовано в формат TDateTime при помощи функции FileDateToDateTime.

Size содержит размер файла в байтах.

Name содержит короткое имя файла с расширением.

FindHandle is an internal handle used to track find state.

FindData (только для Windows) содержит дополнительную информацию, такую как время создания файла, время последнего доступа, а так же длинное и короткое имя файла. См. тип TWin32FindData.

DelphiComponent.ru — бесплатно видеоуроки по Delphi, статьи, исходники

Работа со строками в Delphi

Функция Length языка Delphi

Эта функция возвращает длину строки. У нее есть только один параметр — строка, длину которой надо вернуть. Функция Length выглядит так:

function Length(S): Integer;

Пример использования функции:

В этом примере объявлены две переменные str (строка) и index (целое число). В первой строке кода в переменную str помещается строка «Привет». После этого переменной index присваивается длина строки str. Результат, записанный в пере­менную index, будет равен числу 6 — длина строки.

Функция Сору языка Delphi

Эта функция возвращает указанный отрывок строки. Например, вам нужно по­лучить из строки «Меня зовут Михаил» символы начиная с 5-го по 10-й. Это легко сделать с помощью функции сору. У нее есть три параметра.

  • Строка, из которой нужно получить отрывок текста.
  • Начальный символ.
  • Количество нужных символов.

function Сору(S; Index, Count: Integer): string;

Пример использования функции:

Stri: =’Меня зовут Михаил ‘ ;

Str2:= copy(Stri, 5, 5);

Здесь объявлено две строковых переменных: str1 и str2. В первой строке кода мы присваиваем переменной str1строку «Меня зовут Михаил». В следующей строке происходит копирование в переменную str2 пяти символов из переменной stri, начиная с 5-го символа. Получается, что мы копируем строку с 5-го символа по 10-й. Результатом будет в str2 строка: «зовут».

Функция Delete языка Delphi

Эта функция удаляет кусок текста из указанной строки. У нее есть три параметра.

  • Строка, из которой нужно удалить отрывок текста.
  • Начальный символ, начиная с которого будут удаляться символы.
  • Количество символов для удаления. В общем виде функция выглядит так:

procedure Delete(var S: string; Index, Count:Integer);

Пример использования функции Delete:

Strl:= ‘Меня зовут Михаил’;

В этом примере мы удаляем из строки stri символы, начиная с 5-го по 10-й (пять символов, начиная с 5-й позиции). В результате в переменной str1 останется только строка «Меня Михаил».

Функция Pos языка Delphi

Эта функция ищет указанные символы в строке или, можно сказать, ищет под­строку. Если эти символы найдены, то она вернет порядковый номер, начиная с которого найдена нужная строка. У функции два параметра.

  • Строка, которую надо искать.
  • Строка, в которой надо искать.

Если подстрока не найдена, то функция вернет ноль, function Pos(Substr: string; S: string): Integer; Пример использования функции Pos:

Stri:=’Меня зовут Миша’;

В этом примере мы запускаем поиск строки «Миша» в строке stri. В данном случае строка «Миша» есть в строке переменной и начинается с символа 11. Ре­зультат — в переменной index будет число 11.

Функция Insert языка Delphi

Эта процедура вставляет одну строку в другую, начиная с указанного символа. У нее есть три параметра.

  • Строка, которую надо вставить.
  • Строка, в которую надо вставить.
  • Позиция, куда надо вставить.

В общем виде функция выглядит так:

procedure Insert(Source: string; var S: string; Index: Integer) ;

Пример использования функции insert:

Strl:=’Меня Миша’; Insert(‘зовут’, Strl, б);

Здесь вставляется в строку strl текст «зовут», начиная с 6-го символа. Результа­том будет строка «Меня зовут Миша».

Delphi, delete folder with content

when I have subfolder in folder — this code isn’t delete folders. Is there any error?

5 Answers 5

If I were you, I’d just tell the operating system to delete the folder with all of its content. Do so by writing ( uses ShellAPI )

instead, you get a nice confirmation dialog. If you do

you don’t get the confirmation dialogue, but you do get a progress bar if the operation is lengthy. Finally, if you add the FOF_ALLOWUNDO flag, you move the directory to the Waste Bin instead of permanently deleting it.

Of course, you can combine flags as you like:

will not show any confirmation (but a progress dialog because you don’t specify FOF_NO_UI ) and the directory will be moved to the waste bin and not permanently deleted.]

Функции Remove и RemoveIf в PowerApps Remove and RemoveIf functions in PowerApps

Описание Description

Функция Remove Remove function

С помощью функции Remove можно удалить из источника данных определенную запись или набор записей. Use the Remove function to remove a specific record or records from a data source.

Для коллекций должна совпадать вся запись. For collections, the entire record must match. Удалить все копии записи можно с помощью аргумента All; в противном случае удаляется только одна копия. You can use the All argument to remove all copies of a record; otherwise, only one copy of the record is removed.

Функция RemoveIf RemoveIf function

С помощью функции RemoveIf можно удалить одну или несколько записей на основе определенного условия или набора условий. Use the RemoveIf function to remove a record or records based on a condition or a set of conditions. Каждое из этих условий может быть любой формулой, которая возвращает результат true (истина) или false (ложь), и может содержать ссылки на столбцы источника данных (по имени). Each condition can be any formula that results in a true or false and can reference columns of the data source by name. Каждое условие оценивается отдельно для каждой записи, и запись удаляется, если все условия возвращают значение true. Each condition is evaluated individually for each record, and the record is removed if all conditions evaluate to true.

Функции Remove и RemoveIf возвращают измененный источник данных в виде таблицы. Remove and RemoveIf return the modified data source as a table. Обе эти функции можно использовать только в формулах поведения. You can use both functions only in behavior formulas.

Кроме того, удалить все записи из источника данных можно с помощью функции Clear . You can also use the Clear function to remove all of the records in a data source.

Делегирование Delegation

При использовании с источником данных эти функции невозможно делегировать. Будет извлечена только первая часть источника данных, затем будет применена функция. Результат может не отражать ситуацию в целом. При создании отображается предупреждение, чтобы напомнить об этом ограничении и предложить по возможности переключиться на подлежащие делегированию альтернативы. Дополнительные сведения см. в обзоре делегирования.

Синтаксис Syntax

Remove(источник_данных; запись_1[; запись_2; . ] [; All]) Remove( DataSource; Record1 [; Record2; . ] [; All ] )

  • источник_данных — обязательный аргумент. DataSource – Required. Это источник данных, содержащий запись или записи, которые требуется удалить. The data source that contains the record or records that you want to remove.
  • запись(_n) — обязательный аргумент. Record(s) – Required. Запись или записи, которые требуется удалить. The record or records to remove.
  • All — необязательный аргумент. All – Optional. В коллекции может существовать несколько копий одной записи. In a collection, the same record may appear more than once. С помощью аргумента All можно удалить их все. You can add the All argument to remove all copies of the record.

Remove(источник_данных; таблица[; All]) Remove( DataSource; Table [; All ] )

  • источник_данных — обязательный аргумент. DataSource – Required. Это источник данных, содержащий записи, которые требуется удалить. The data source that contains the records that you want to remove.
  • таблица — обязательный аргумент. Table – Required. Таблица с записями, которые требуется удалить. A table of records to remove.
  • All — необязательный аргумент. All – Optional. В коллекции может существовать несколько копий одной записи. In a collection, the same record may appear more than once. С помощью аргумента All можно удалить их все. You can add the All argument to remove all copies of the record.

RemoveIf(источник_данных; условие[; . ]) RemoveIf( DataSource; Condition [; . ] )

  • источник_данных — обязательный аргумент. DataSource – Required. Это источник данных, содержащий запись или записи, которые требуется удалить. The data source that contains the record or records that you want to remove.
  • условие(_n) — обязательный аргумент. Condition(s) – Required. Формула, возвращающая значение true (истина) для записи или записей, которые требуется удалить. A formula that evaluates to true for the record or records to remove. В формуле можно использовать названия столбцов из источника_данных. You can use column names from the DataSource in the formula. Если указано несколько условий, для удаления соответствующей записи все они должны возвращать значение true. If you specify multiple Conditions, all must evaluate to true for the record or records to be removed.

Примеры Examples

В этих примерах выполняется удаление записи или записей из источника данных под названием IceCream, начинающегося со значений из следующей таблицы: In these examples, you’ll remove a record or records in a data source that’s named IceCream and that starts with the data in this table:

Илон Маск рекомендует:  Что такое код pg_close
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL