|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Зацените будильник написанный новичком (Не примитив)
Наверное полтора месяца писал не зная толком ничего в программировании, ну только разве что прочитал книжку "Библия Delphi"
Так купил всего 4 книги и в инете кучу всяких справок и советов накачал. Писал так, то в день час два посижу, то 5 часов. Ладно, что она просто работает, так она ещё и без ошибок... вроде... Короче если в настройках стоят галочки на автозапуск и на сохранение времени будильника, то если вдруг скачок напряжения и перезагрузка компа, то он грузится и продолжает работать. Не супер достижение, но когда писал прогу думал этого я никогда не сделаю.http://narod.ru/disk/14888263000/%D0%91%D1%83%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D 0%BA%201.2.rar.html Ссылка оновлена. Можно скачивать Последний раз редактировалось -=C@$PeR=-, 09.11.2009 в 02:42. |
#2
|
||||
|
||||
когда я свой будильник написа, меня патом друзьядолго тыкали "во типа изобретатель нах, открывай компанию, будеш не хуже microsoft"
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#3
|
|||
|
|||
Цитата:
А я когда написал свой первый будильник и закачал его другу, так он с ним чуть на работу не проспал, я его делал по книжке, почти один в один, так как не знал почти ничего, забывал постоянно даже из строки в целое например переводить и т.д . И сидел часами ломал голову, что да как. В том будильнике использовалась какаято стандартная функция типа CompareTime и время сравнивалось, например сейчас 6 вечера, а установить надо на 5 утра, так он срабатывал сразу. а если на позже, то срабатывал позже. И ещё чёто там было не так не помню. |
#4
|
||||
|
||||
Пожелания...
1. Нет текущего времени,я должен искать часы...на компе или еще где то... 2. Осталось до сигнала в минутах, а можно было бы еще и в секундах... Предупреждения... 1. Не пиши при помощи чего пишешь прогу...среда программирования ведь у тебя нелицензионная ведь так...значит и писать на ней права не имеешь... 2. Лично у меня проблема со шрифтом всплывающих сообщений, написаны крокозябры...Windows 7600... 3. Монитор не выключается... 4. И не стоит делать ее тестовой до 2010 г...все равно взломают)))а ссобщение кумарит))) Пока все....ждем версию 1.3... В начале был Бит, потом Байт и только потом появилось Слово... |
#5
|
||||||
|
||||||
Цитата:
Цитата:
Код:
procedure GetRemainedTime; var HourCount, MinCount : word; HourENow, MinENow : word; //HourENow - тут будет текущие часы begin HourENow := HourOf(Now); MinENow := MinuteOf(Now); if (HourENow > HourAlarm) and (MinENow <> 0) then begin HourCount := 24 - HourENow; HourCount := HourCount + HourAlarm - 1; MinCount := (60 - MinENow) + MinAlarm; if MinCount > 59 then begin HourCount := HourCount + 1; MinCount := MinCount - 60; HourRemain := HourCount; MinRemain :=MinCount; exit; end else begin HourRemain := HourCount; MinRemain :=MinCount; exit; end; end; if (HourENow > HourAlarm) and (MinENow = 0) then begin HourCount := 24 - HourENow; HourCount := HourCount + HourAlarm; MinCount := MinAlarm; HourRemain := HourCount; MinRemain :=MinCount; exit; end; if (HourENow < HourAlarm) and (MinENow <> 0) then begin HourCount := HourAlarm - HourENow - 1; MinCount := (60 - MinENow) + MinAlarm; if MinCount > 59 then begin HourCount := HourCount+1; MinCount := MinCount - 60; HourRemain := HourCount; MinRemain :=MinCount; exit; end else begin HourRemain := HourCount; MinRemain :=MinCount; exit; end; end; if (HourENow < HourAlarm) and (MinENow = 0) then begin HourCount := HourAlarm - HourENow; MinCount := MinAlarm; HourRemain := HourCount; MinRemain :=MinCount; exit; end; if (HourENow = HourAlarm) and (MinENow < MinAlarm) then begin HourRemain := 0; MinRemain := MinAlarm - MinENow; exit; end; if (HourENow = HourAlarm) and (MinENow > MinAlarm) then begin HourRemain := 23; MinRemain := (60 - MinENow) + MinAlarm; exit; end; if (HourENow = HourAlarm) and (MinENow = MinAlarm) then begin HourRemain := 0; MinRemain := 0; exit; end; end; Цитата:
Сразу назревает несколько вопросов: Откуда такая увереность (лицензия)? Тебе не всё равно? Кстати под Window 7 полюбому куплю лицензию, ну под Delphi вроде 2010. Слава богу работаю )). Если я не буду писать этой средой разработки, то я вообще не буду писать, больше не на чём не умею. Для меня загадка как например интерфейс делать на паскале. Друг, а Windows у тебя лицензионный? Цитата:
Цитата:
Там используется API функция, вот код выключения монитора: Код:
procedure MonitorOnOff(OnOff : boolean); //Выключить/включить монитор begin if OnOff = True then //если в условии указано True, значит выключить монитор begin SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1); end else //если False, значит включить begin SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1); end; end; и кстати, если ты имеешь ввиду, что монитор не выключается, когда жмёшь на галочку, то он и не должен. Он должен выключаться когда ты его запускаешь, если галочка стоит, а так можно выключить выбрав соответствующий пункт в меню которое появляется при щелчке на значке в трее. Цитата:
Хотелось бы посмотреть на взломаную версию. По взлому кое что читал. При выводе сообщения не используется API их видно в той же Olly Debag. Не используется текст выводимый в окно открытым текстом, тоесть то что видно в окне, в переменной храниться в другом виде. защита была сделана наспех. Да и не особо нужна она. Просто не хочу недоделаное пускать в массы , ексешник сжат. Последний раз редактировалось -=C@$PeR=-, 08.11.2009 в 16:06. |
#6
|
||||
|
||||
1 пункт. Написал свое мнение...Мне быхотелось видеть время в том же окне а не пререводить взгляд вниз на трей...
2 пункт. Будильник тогда можно будет использовать как таймер... Цитата:
У меня винда 7 (build 7600) пока лицензионная...в смысле до 2010 года мелкософт такое позволяет... А про защиту напишу так...через PeID (или что то другое) вычисляешь каким алгоритмом сжата прога...в сети полно описаний распаковки их... запускаешь прогу через Olly Debug или при сложности SoftIce и твои процедуры как на ладони...меняешь к примеру je на jne и всё... PS Критиковать нисколько не хотел просто написал свое мнение...т.е. не хотелось бы выяснений кто прав кто неправ и словесной перепалки... В начале был Бит, потом Байт и только потом появилось Слово... Последний раз редактировалось NIch, 08.11.2009 в 23:00. |
#7
|
|||
|
|||
Цитата:
Цитата:
между делом, чтобы не создавать тему и т.д. Где взять инфу как правильно устанавливать компоненты? |
#8
|
||||
|
||||
Неплохой будильник - тока размер для простенького будильника - великоват.
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие Последний раз редактировалось AllMaNi, 09.11.2009 в 00:24. |
#9
|
|||
|
|||
Цитата:
|
#10
|
|||
|
|||
Почти всё сделал, теперь в настройках можно менять, ну типа скин будильника на маленький, два дня сидел за этим делом, просто все компоненты раскидать по форме програмно надо, а это как минимум надо у каждого поменять Left, Top, Width, Height. Тестирую вылетает ошибка EAccessViolation.
Цитата:
Вообще ничё не понял. Я как понял это происходит при сохранении структуры содержащей множество настроек будильника в файл формата .dat с помощью TFileStream или чёто меди плэер тупит, много раз прогонял пошагово, то в одном месте затупит, то вдругом. Код:
procedure SaveSettings; var Ini : TCustomIniFile; reg : TRegistry; FS : TFileStream; begin SettingToRecord; //нужно чтобы все настройки загнать в переменные Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Settings.cfg'); Ini.WriteString('Strings','Message',Setting.MessageAlarm); Ini.WriteString('Strings','Musicway',Setting.MusicWayName); Ini.WriteInteger('Colors', 'Message',Setting.ColorMsgFont); Ini.WriteInteger('Colors','Time',Setting.LColorDigits); Ini.WriteInteger('Colors','Date',Setting.LColorDate); Ini.WriteInteger('Colors','LabelHM',Setting.LColorHourMin); Ini.WriteInteger('Colors','ComboBoxFont',Setting.ColorCombBoxFont); Ini.WriteInteger('Colors','ComboBoxBack',Setting.ColorCombBoxBack); Ini.WriteBool('CheckSettings', 'AlarmClockReady',False);//чтобы будильник при // следующем запуске был в не запущеном состоянии, если по среди работы программы // вдруг сняли галочку в настройках, "сохранять время сигнала будильника" Ini.WriteBool('CheckSettings', 'RepeatMusic', Setting.RepeatMusic); Ini.WriteBool('CheckSettings', 'MonitorOff',Setting.CheckBoxMonitor); Ini.WriteBool('CheckSettings', 'AutoRun', Setting.AutoRun); Ini.WriteBool('CheckSettings','AutoRunParameters', Setting.AutoRunParameters); Ini.WriteBool('FormStyle', 'AlwayOnTop', Setting.OnTop); Ini.WriteInteger('Counters','CountRepeat', Setting.CountRepAlarm); Ini.WriteInteger('Counters','CountRepeatMS', Setting.CountRepMilisecond); if Setting.AutoRunParameters then begin Ini.WriteInteger('AlarmTime', 'Hours', HourAlarm); Ini.WriteInteger('AlarmTime', 'Minutes', MinAlarm); Ini.WriteBool('CheckSettings', 'AlarmClockReady',Form1.ACStarted); end; //else - здесь можно поставить запись, что будильник не запущен, вместо той что сверху, будет тоже самое Ini.Free; FS := TFileStream.Create('Size.dat', fmOpenRead or fmCreate); FS.Write(Setting, SizeOf(Setting)); FS.Free; reg := TRegistry.Create; reg.RootKey := HKEY_CURRENT_USER; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true); if Setting.AutoRun then //Если Автозагрузка выбрана то... begin reg.WriteString('AlarmClock',Application.ExeName); reg.CloseKey; reg.Free; end else begin reg.DeleteValue('AlarmClock'); reg.CloseKey; reg.Free; end; end; или вообще дело не в этом. Всё разобрался, это всё косячил TFileStream, переписал, теперь сохраняю в ини и читаю от туда, перестало тупить Последний раз редактировалось -=C@$PeR=-, 12.11.2009 в 23:37. |
#11
|
|||
|
|||
Цитата:
проведи программу через хороший exe compressor и никакой PeID не поможет. // а будильник это хорошо) |
#12
|
||||
|
||||
Все мы когда то писали будильник 5+
|