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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2016, 19:47   #1
Travaderevo
Новичок
Джуниор
 
Регистрация: 15.10.2016
Сообщений: 1
По умолчанию Программа для смены обоев(Delphi)

Доброго времени суток! Хотел вот написать программу для смены обоев, да вот только сама смена запускаться не хочет, выбор файла работает, смена интервала работает. Ошибки не выдает. Подскажите что не так. Заранее спасибо.


Код:
Procedure Change;
const
 Desktop: TGuid='{75048700-EF1F-11D0-9888-006097DEACF9}'; //для получения доступа к рабочему столу
var
 i:integer;
 ActiveDeskTop:IActiveDesktop; // вроде понятно, зачем
begin
 ActiveDesktop:=CreateComObject(Desktop) as IActiveDesktop; //создаем объект и получаем разрешение доступа к рабочему столу
 ActiveDesktop.SetWallpaper(StringToOleStr(form1.Lbl1.Caption), 0); // определились с выбором картинки
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL); // применяем картинку на рабочем столе
end;
procedure TForm1.fllst1Click(Sender: TObject);
begin
Lbl1.Caption:=fllst1.Filename;
Img1.Picture.LoadFromFile(Lbl1.Caption);
Btn1.Enabled:=true;
tmr1.Enabled:=false; Btn1.Enabled:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i : Real;
begin
 i:=0;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
var i : Variant;
begin
 i:=i+1; //переходим к следующей картинке
 if i=form1.fllst1.Items.Capacity // если наш счетчик дошел до конца списка, идем в начало
 then i:=0;
 lbl1.caption:=form1.fllst1.Items[i]; //все понятно
 change; //меняем обои
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
tmr1.enabled:=true;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
tmr1.enabled:=false;
end;
procedure TForm1.se1Change(Sender: TObject);
begin
tmr1.Interval:=se1.Value;
end;
end.
Изображения
Тип файла: jpg 1.jpg (102.4 Кб, 128 просмотров)
Тип файла: jpg 2.jpg (114.1 Кб, 123 просмотров)
Тип файла: jpg 3.jpg (111.4 Кб, 133 просмотров)
Travaderevo вне форума Ответить с цитированием
Старый 17.10.2016, 09:01   #2
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Переменная "I" здесь должна быть объявлена глобально или в public или private секциях формы, а не в каждой процедуре, например
Код:
var
  I:     Integer;
  Form1: TForm1;
и почему у неё тип "Variant", когда должен быть "Integer"? К тому-же лучше-бы имя файла передавать в параметре процедуры, а не брать и обращаться к объекту из процедуры. А вместо строчки
Код:
 if i=form1.fllst1.Items.Capacity // если наш счетчик дошел до конца списка, идем в начало
должно быть
Код:
 if i=form1.fllst1.Items.Count// если наш счетчик дошел до конца списка, идем в начало
так как свойство capacity отображает то количество элементов, которое объект способен хранить, а не то количество которое на данный момент хранится, для этого есть свойство Count.

ps: не стоит копипастить найденный на просторах интернета код ибо он не всегда правилен, не говоря уже об оптимальности.
DIONISKA вне форума Ответить с цитированием
Старый 17.10.2016, 09:07   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
не стоит копипастить найденный на просторах интернета код ибо он не всегда правилен, не говоря уже об оптимальности.
... сказал автор сообщения с кодом, опубликованного на интернет-форуме.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.10.2016, 09:34   #4
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
... сказал автор сообщения с кодом, опубликованного на интернет-форуме.
Первое правило ̶б̶о̶й̶ц̶о̶в̶с̶к̶о̶г̶о̶ клуба программистов.. никому доверять нельзя, только Великой Справке и то не всегда.
DIONISKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь!!!Программа для смены обоев на рабочем столе Deammilord Помощь студентам 3 18.11.2013 10:12
Simple wallpaper changer - простенькая утилитка смены обоев рабочего стола Человек_Борща Софт 1 06.10.2012 16:29
Функция для смены обоев рабочего стола Sylar9 Win Api 2 27.06.2012 09:23
Программа для смены IP Al_lectro Фриланс 1 09.09.2011 23:26
программа для смены прокси designer999 Фриланс 18 17.09.2010 17:40