Topic: Удаление содержимого папок

Здравствуйте, у меня в проекте в таблице есть поле для записи файла, хочу сделать так, чтобы при выделении какой либо записи в таблице, файл, соответствующий  этой записи, записывался в папку. Проблема в том, что пользователей много и папка быстро заполняется файлами, в которых найти нужный файл трудно. Как можно организовать чистку папки, чтобы перед записью файла, папка сперва чистилась( удалялось ее содержимое)? В интернете нашел решение для делфи, но оно при компиляции в My Visual DataBase выдает ошибку, не понимает тип. Может быть есть штатные функции?

Re: Удаление содержимого папок

И еще один вопрос, как получить разность двух дат в месяцах. Поясню, имеется два поля, дата начала и дата окончания и вычисляемое поле в виде разности этих дат. Результатом расчета является разность в годах, а мне нужно в месяцах(если даты 16.09.2014 и 16.09.2015 то в поле разности получается 1, а если 16.05.2015 и 16.09.2015, то результат 0) .

Re: Удаление содержимого папок

Приветствую, пример, как очистить папку mp3 которая распологается в папке с проектом:

procedure ClearDirectory(path: string);
var
    sl: TStringList;
    i,c: integer;
begin
    sl := TStringList.Create;
    sl.Text := GetFilesList(path);
    c := sl.Count-1;

    for i := 0 to c do
    begin
        DeleteFile(sl[i]);
    end;

    sl.free;
end;


procedure Form1_Button6_OnClick (Sender: string; var Cancel: boolean);
var
   sPath:string;
begin
    sPath := ExtractFilePath(Application.Exename) + 'mp3';
    ClearDirectory(sPath);
end;
Dmitry.

Re: Удаление содержимого папок

shanin_s wrote:

И еще один вопрос, как получить разность двух дат в месяцах. Поясню, имеется два поля, дата начала и дата окончания и вычисляемое поле в виде разности этих дат. Результатом расчета является разность в годах, а мне нужно в месяцах(если даты 16.09.2014 и 16.09.2015 то в поле разности получается 1, а если 16.05.2015 и 16.09.2015, то результат 0) .

необходима формула для вычисляемого поля? попробуйте так

(strftime('%Y', datefield1)*12+strftime('%m', datefield1)) -  (strftime('%Y', datefield2)*12+strftime('%m', datefield2))
Dmitry.

Re: Удаление содержимого папок

Спасибо большое за помощь с датами все получилось, месяцы считаются, а вот с удалением не получилось. При компиляции проекта пишет "Undeclured idendifier 'DeleteFile'". Видать у меня старая версия программы 1,44 или нужно эту процедуру определить.

Еще хотел спросить, какие строковые типы поддерживает программа? Я в компонент File загружаю некоторый файл и появляется название файла с расширением. Мне нужно скопировать название файла без расширения  и вставить его в текстовое поле. я пытаюсь это сделать так:

procedure Form1_File_OnChange (Sender: string);
var i,L:integer;
   s,p:string;
begin
 s:= Form1.File.Text;
 L:=Length(Form1.File.Text);
  p:='';
   For i:=0 to L-5 do
  begin
     p:=p+s[i];
  end;
 Form1.Indicator.text := p;
end;

В результате текстовое поле пустое, подобный фокус в делфи проходил. L-5 не случайно, поскольку от 0 до L-1 это полное название с расширением, отнимаем само расширение(3 символа) и точку, получается  L-5.

Re: Удаление содержимого папок

shanin_s
К сожалении в версии 1.44 функция 'DeleteFile' отсуствует.


на счет расширения, попробуйте так

procedure frmEmployee_DBFile1_OnChange (Sender: string);
var
    s: string;
    i: integer;
begin
    s := frmEmployee.DBFile1.Text;
    if s <> '' then
    begin
        i := Pos('.', s);
        SetLength(s, i-1);
        frmEmployee.Edit1.text := s;
    end else frmEmployee.Edit1.Clear;

end;
Dmitry.

Re: Удаление содержимого папок

А начиная с какой версии функция "DeleteFile" присутствует?

Re: Удаление содержимого папок

С расширением  получилось, снимаю шляпу!!

Re: Удаление содержимого папок

Наверное Вас 1000 раз задавали этот вопрос, как из базы вытащить файл, который был ранее в нее внесен?

Re: Удаление содержимого папок

shanin_s wrote:

А начиная с какой версии функция "DeleteFile" присутствует?

начиная с версии 1.45

Dmitry.

Re: Удаление содержимого папок

shanin_s wrote:

Наверное Вас 1000 раз задавали этот вопрос, как из базы вытащить файл, который был ранее в нее внесен?

компонент DBFile позволяет файл как сохранить, так и извлечь его, для извлечения используется кнопка с правой стороны данного компонента.

Dmitry.

Re: Удаление содержимого папок

Огромное Вам спасибо, как за консультацию так и за замечательную программу.

Re: Удаление содержимого папок

Хотел спросить, если новая версия программы пишет, что не зарегистрирована, то как я понял, через 60 дней она перестанет работать и придется покупать лицензию. Лицензия это ключ? Она привязывается к железу компьютера? Я могу оплатив программу потом перенести ее на другой ПК? Если заканчивается пробная лицензия, от созданные при помощи нее программы так же перестанут запускаться или окончание пробного периода не влияет на откомпилированные проекты? Перевод созданной программы с бесплатной 1,44 на более новую платную, производится удалением старой среды установкой новой и компиляцией в новой старого проекта? Или что то в программе нужно менять чтобы в новой среде компилировать?
Извините за кучу вопросов, уж ОЧЕНЬ понравилась Ваша программа. Показал на работе начальнику результат работы программы ему понравилось в принципе то же самое я мог бы сделать в Delphi только код у меня бы в разы вырос ну и время на создание ушло бы больше. Буду уламывать шефа на приобретение лицензии.

Re: Удаление содержимого папок

shanin_s

Программа имеет 60 дней ознакомительного периода, по истечении которых программа перестанет запускаться, также и созданные ей проекты, чтобы возобновить работу программы после ознакомительного периода, необходимо приобрести лицензию. Лицензию это ключ.


Ключ не привязывается к компьютеру, поэтому вы можете перенести ее на любой другой компьютер.


Достаточно установить последнюю версию программы и перекомпилировать ей ваши проекты, менять скорей всего ничего не придется.

Dmitry.