Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2012, 21:00   #1
BparHapoga
Пользователь
 
Аватар для BparHapoga
 
Регистрация: 13.07.2012
Сообщений: 11
По умолчанию Скриншот по таймеру

Здрасьте всем
Такая вот проблемка у меня, у начинающего:
Пишу маленькую программку, задача которой делать скриншоты в определённый промежуток времени, сохраняя их в определённой папке.
Есть форма, две кнопки, Image и таймер.
По первой кнопке начинается процесс, вторая закрывает приложение, останавливая процесс.
Код:
pic.SaveToFile('C:\Users\Public\Recorded TV\Sample Media\s.bmp');
Подскажите пожалуйста, что и куда нужно прописать, чтобы при сохранении новой картинки она не перезаписывалась, а меняла название на s1.bmp, s2.bmp и т.д.?
Всю голову переломал.

Последний раз редактировалось BparHapoga; 13.07.2012 в 21:07.
BparHapoga вне форума Ответить с цитированием
Старый 13.07.2012, 21:10   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
pic.SaveToFile('C:\Users\Public\Recorded TV\Sample Media\s'+inttostr(i)+'.bmp');
i - счетчик. Также можно проверять с помощью FileExists (http://delphibasics.ru/FileExists.php) наличие файла, и увеличивать счетчик.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.07.2012, 23:27   #3
BparHapoga
Пользователь
 
Аватар для BparHapoga
 
Регистрация: 13.07.2012
Сообщений: 11
По умолчанию

Честно говоря ссылка не очень помогла. Там все результаты это 'showmessage'. А мне-то нужно добавить новые файлы
Сейчас оно работает, но перезаписывает себя.
BparHapoga вне форума Ответить с цитированием
Старый 13.07.2012, 23:44   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Объявить глобальную переменную i.
При запуске в formcreate написать i:=1;
В месте, где планируется сохранять:
Код:
while fileexists('C:\Users\Public\Recorded TV\Sample Media\s'+inttostr(i)+'.bmp') do
inc(i);
pic.SaveToFile('C:\Users\Public\Recorded TV\Sample Media\s'+inttostr(i)+'.bmp');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.07.2012, 23:51   #5
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Возможно Вам будет проще использовать генерировать имена файлов на основе текущей даты и времени используя DateTimeToString?
то бишь что-нибудь типа
Код:
var
  NewFileName:string;
...
   DateTimeToString(NewFileName, 'yymmddhhnnss', Now);
   pic.SaveToFile('C:\Users\Public\Recorded TV\Sample Media\'+NewFileName+'.bmp');
astecenko вне форума Ответить с цитированием
Старый 14.07.2012, 00:00   #6
BparHapoga
Пользователь
 
Аватар для BparHapoga
 
Регистрация: 13.07.2012
Сообщений: 11
По умолчанию

BDA, astecenko,
Спасибо, попробую оба варианта.

P.S.
Взял на вооружение метод DateTimeToString - он действительно удобнее, спасибо ещё раз

Последний раз редактировалось BparHapoga; 14.07.2012 в 01:23.
BparHapoga вне форума Ответить с цитированием
Старый 14.07.2012, 06:18   #7
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Цитата:
Сообщение от astecenko Посмотреть сообщение
Возможно Вам будет проще использовать генерировать имена файлов на основе текущей даты и времени используя DateTimeToString?
С ростом числа скринов вероятность затерть файл, может вырасти очень сильно, даже при затирания одного скрина, например в случае если скринился секретный вопрос с ответом при регистрации в webmoney, последствия могут быть самыми непредсказуемыми.


Работает безотказно, несколько лет уже
Код:
 var  FreeName:String;
      I:integer;
begin
  mDir:='D:\Special\';
  i:=0;
  SName:=MDir+'Shot'+IntToStr(i)+'.Jpg';
 While (FileExists(SName)) do
 begin
SName:=MDir+'Shot'+IntToStr(i)+'.Jpg';
i:=i+1;
 End;
 Image1.Picture.SaveToFile(SName);
end;
Цитата:
Сообщение от BparHapoga Посмотреть сообщение
BDA, astecenko,

Взял на вооружение метод DateTimeToString - он действительно удобнее, спасибо ещё раз
обязательно проверяйте нет ли уже файла через функцию - fileexists
Без проверки приложение небезопасно.
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.

Последний раз редактировалось HellMercenariess; 14.07.2012 в 06:22.
HellMercenariess вне форума Ответить с цитированием
Старый 14.07.2012, 13:01   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
С ростом числа скринов вероятность затерть файл, может вырасти очень сильно
и часто у вас на компе время и дата повторяется?
просто взять еще и ms достаточно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2012, 14:27   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
и часто у вас на компе время и дата повторяется?
У меня каждый день повторяется, иногда несколько раз в день. Вот как включаю компьютер, то всегда 1 января 2002 года
eoln вне форума Ответить с цитированием
Старый 14.07.2012, 17:04   #10
BparHapoga
Пользователь
 
Аватар для BparHapoga
 
Регистрация: 13.07.2012
Сообщений: 11
По умолчанию

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


Работает безотказно, несколько лет уже
Код:
 var  FreeName:String;
      I:integer;
begin
  mDir:='D:\Special\';
  i:=0;
  SName:=MDir+'Shot'+IntToStr(i)+'.Jpg';
 While (FileExists(SName)) do
 begin
SName:=MDir+'Shot'+IntToStr(i)+'.Jpg';
i:=i+1;
 End;
 Image1.Picture.SaveToFile(SName);
end;

обязательно проверяйте нет ли уже файла через функцию - fileexists
Без проверки приложение небезопасно.
Можно ведь сделать так, чтобы при каждой активации, программа автоматом создавала папку в папке
BparHapoga вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по таймеру -Jack- Общие вопросы Delphi 5 26.11.2011 05:29
Вызов функции по таймеру в с++ Gared Помощь студентам 0 21.05.2011 00:34
Обновление по таймеру Sergey112233 Microsoft Office Excel 20 08.01.2011 15:03
Срабатывание датчика по таймеру RockForr Общие вопросы Delphi 8 26.05.2009 16:32
Автосохранения по таймеру ScreN Общие вопросы Delphi 13 09.01.2009 18:49