Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать выбор знака задиака 
:(
    Опции темы
User
Дата 8.4.2005, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



Я скажем ввожу дату рождения (год, месяц, число) через календарь DateTimePicker1., и как можно по нему определить к какому задиакальному кругу человек относиться. Использую компонент Label1 и DateTimePicker1. Ну скажем лев, телец, весы, рыба? Буду благодарен за код!


PM MAIL WWW   Вверх
DimW
Дата 8.4.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: нет
Всего: 44



а ты знаешь диапозоны дат, в которых находятся знаки?
PM MAIL ICQ   Вверх
MacTep
Дата 10.4.2005, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Цитата
а ты знаешь диапозоны дат, в которых находятся знаки?
Надо знать всю эту информацию и тогда можно будет легко посчитать, к какому знаку зодиака относится человек! smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Medved
Дата 10.4.2005, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Тебе нужен массив, или коллекция дат (или таблица БД), знаков зодиака и их диапазон их дат. Сравнивай их (DateUtils.CompareDate) с текущей датой (SysUtils.Now), и выводи куда тебе надо. Что тут сложного.

Если же хочешь чтобы кто-нибудь сделал тебе полноценный код - я тогда перенесу этот топик в раздел работа.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
offline
Дата 11.4.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: нет
Всего: 7



Попробуй сделать так:
Положи на форму StringGrid1
В первом столбце укажи начало периода знака зодиака, во втором столбце конец периода знака зодиака, а в третем сам знак зодиака. StringGrid1 спряч (Visidle := False)
Затем после ввода даты создай цикл (например на событии OnChange), который пробегает по строкам сетки и сравнивает введенную дату с периодом знака зодиака. Если эта дата входит в текуций период, то останавливай цикл и выводи знак задиака из третей ячейки.
PM MAIL   Вверх
Snowy
Дата 11.4.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Сразу прошу прощения за большой код...
Небольшой экскурс в зодиак. Границы знаков не фиксированные.
В разные года знаки начинаются в разное время и даже в разные даты.
Когда-то давно я писал программу зодиака. Все планирую ее переделать, но мне не хватает картинок на кнопки со знаками. А искать их то времени нет, то забываю.
В том числе в программе был такой момент, когда по дате из пикера выводилась таблица знаков на год рождения с датами и временем начала и конца периода знака. Определенный месяц подсвечивался.
С тех времен у меня осталась таблица. Вот приспособил к этой таблице код, определяющий знак по дате и времени! Время рождения также важно, если день переходный!
Правда в таблице у меня года только с 1941 по 1996. Тут уж извините - какие данные были.
Для всех остальных годов я просто беру данные 1996-го года.
Пример использования:
Код

  ShowMessage(ZnakName(ZnakByDate(now))); // скажет какой сейчас знак
  ShowMessage(ZnakName(ZnakByDate(DateTimePicker1.Date))); // скажет знак из пикера


А теперь сам юнит. Он большой, ибо таблица...

Код

unit znak;

interface

function ZnakByDate(dt: TDateTime):integer; // возвращает номер знака
function ZnakName(n: integer):string; // возвращает имя знака по номеру

implementation

uses SysUtils;

function dig(n:word):string;
var r: string;
begin
  r:=IntToStr(n); if n<10 then r:='0'+r;
  result:=r;
end;

function ZnakByDate(dt: TDateTime):integer;
const period:array[41..96] of string=
    ('210744192204202024200851210823211636230334230928230646231529221349220255',
     '201334190356210220201450211323212133230826231517231233232227221948220844',
     '201923190947210811201939211908220316231407232058231816240415230130221440',
     '210119191540211403210131220103220912232004250255240016241008230821222029',
     '210707192127201949200818210651211502230156230846230602231558221308220215',
     '201254190315210137201407211240212052250745231435231250232144221855220804',
     '201845190909210833202002211934220344231437232126231841242335230146221353',
     '210032191352211413202439220009220819231914242609232329240626230638221943',
     '210618192037201957200725210657211511230208230903230622231518221229220133',
     '201209190227210148201317211250212103230757231448231206232103221816220723',
     '201800190818210735201859211827220232231330232023231744240245230003221313',
     '202352191410211326210048220015220825231921240216232337240835230551221900',       '210538191957201914200637210604211413230107230803230524231422221136220043',
     '201121190141210101201225211153212000230652231345230806232006221722220631',
     '201711190732210653201819211747212554231245231936231655240156222314221224',
     '202302191319211235202358212324220731231825240119232241240743230501221811',
     '210448191905201820200543210512211324230020230715230435231334221050230000',
     '201039190058210017201141211110211921230615231308231026231924221639220549',
     '201629190649211606201727211651220057231151231846231609240111222229221140',
     '202219191238211155202317212242220650231747240044232209240711230427221734',
     '210410191826201743200506210433211242232338230634230359231302221018212326',
     '201001190017202332201055211022211830220524231219230943231847221608220520',
     '201558190615210530201651211616220054231118231813231535240040222202221115',
     '202154191209211120202236212158220604231659232358232124240629230349221702',
     '210341191757201710200427210350211257222253230551230317231221220939212250',
     '200929182348202305201026210950211756230448231143230906231810221529220441',
     '201520190538210453201612211532212334231023231718231443232351222114221026',
     '202108191124211037202155212118220523231616232313232038240544230305221616',
     '210254191709201522200341210306211113222208230403240226231130220849212200',
     '200838182255202103200927210850211656230348231044230807231711221431220344',
     '201454190442210257201515211437212243230937231634231359232304222025220936',
     '202013191027210838202054212015220420231515232215241945240453230214221524',
     '210159191612201522200238210159211006222103230403240133231042220803212113',
     '200748182201202113200830210754211601230256230954230721231630221354230308',
     '201346190359210307201419211336212138230830231529231259232111221939230856',
     '201937190950210857202007211924220327231422232124241855240406230131241446',
     '210125191540201450190203210121210925222019230319240048230958220722212035',
     '200715182131202043200757210714211514220204230901230630231541221307220223',
     '201314190321210234201350211308212110230801231457231226232137221905220821',
     '201900190914210822201935211854220257231349232047241817240328230054221410',
     '210049191502201410200123210042210847221942230241240009230918220642211956',
     '200636182052202003200719210639211445230140230834230606231513221236220151',
     '201231190247210156201308211223212043230716231416231147232058221824220739',
     '201817190831200739201850211807220209231305232008231742240255230019221330',
     '210005191417201325200038202358210803221859230201232333230846220611211923',
     '200558182008201914200626210543211345230037230736230508231422221151220108',
     '201147190158200103201212211128211930230625231326231059232015221745220703',
     '201741190750210651201758211710220111231206231910231646240201222330221246',
     '202325191336201239192345202257210657221752230054232229230745220512211828',
     '200507181921201829200539210454211253222346230647230420231336221105220022',
     '201102190114212000201127211037211833230522231221230956231914221647220607',
     '201648190659200602201709211620220019231112231813231549240006222236221154',
     '202238191244201149192257202212210615221709230011232143230658220426211744',
     '200423181836201741210049210402211200222251230551230323231238221007212326',
     '201008190022202328201036210949211748230444231144230919231836221606220523',
     '201601190611210515201622211544212334231030231735231513240032222202221117');
var
  s,s1,s2:     string;
  y,m,d:       word;
  h,mn,sc,ms:  word;
  a:           integer;
begin
  result:=0;
  DecodeDate(dt, y, m, d);
  DecodeTime(dt,h,mn,sc,ms);
  s1:=dig(m)+dig(d)+dig(h)+dig(mn);
  if (y<1941) or (y>1996) then y:=1996;
  s:='010000'+period[y-1900]+'312359';
  for a:=1 to 13 do begin
    if a=1 then s2:='01' else s2:=dig(a-1);
    s2:=s2+copy(s,a*6-5,6);
    if s1>s2 then begin
      s2:=dig(a)+copy(s,a*6+1,6);
      if s1<=s2 then result:=a;
    end;
  end;
  if result>0 then begin
    if result=13 then result:=1;
    dec(result,3);
    if result<1 then result:=result+12;
  end;
end;

function ZnakName(n: integer):string;
const zn:array[0..12] of string=
   ('','Овен','Телец','Близнецы','Рак','Лев','Дева',
    'Весы','Скорпион','Стрелец','Козерог','Водолей','Рыбы');
begin
  if (n<0) or (n>12) then n:=0;
  result:=zn[n];
end;

end.


Это сообщение отредактировал(а) Girder - 11.4.2005, 18:12
PM MAIL   Вверх
Негодяй
Дата 11.4.2005, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Порядочный
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Регистрация: 13.2.2005
Где: Kazakhstan, Almat y

Репутация: нет
Всего: 32



Цитата(Snowy @ 11.4.2005, 18:02)
...но мне не хватает картинок на кнопки со знаками...

подойдёт?? правый верхний угол?? это имелось в виду??
http://www.konoos.ru/catalog/carpets/zodiacs/aries/

Это сообщение отредактировал(а) Негодяй - 11.4.2005, 19:05
PM MAIL   Вверх
Snowy
Дата 12.4.2005, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата
подойдёт?? правый верхний угол?? это имелось в виду??

Не, эти страшные и монохромные.
Хотелосы бы что-нить, что было раньше.
Тут у меня недавно просили выложить где-нить мою гороскопную программу.
Я ее написал в 2001-м, но так никуда и не выкладывал - есть пара глюков, да и многое хотелось бы поменять. Но к сожалению утратил все графические материалы, и так руки и не дошли.
Если кому интересно, можете качнуть тут http://petin.pisem.net/files/zodiak.exe (618кб)
Там куча текстового материала, тест, таблица определения, вобщем такой гороскопный наборчик.
Не выкладовал на софтовики, поскольку прогу еще нужно отлаживать и оптимизировать.
Слишком она тяжеловата для такого рода программ.
Хотя... Мужик-лапотник для своего времени был тоже не из легких.
PM MAIL   Вверх
User
Дата 12.4.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



немогу скачать, говорит что ненаходит данного файла по ссылки http://petin.pisem.net/files/zodiak.exe (618кб)
PM MAIL WWW   Вверх
Snowy
Дата 12.4.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Во, блин. Линукса, линукса... Оказывается у них регистр роль играет.
Ктоб мог подумать, что для http есть разница.
Вот линк: http://petin.pisem.net/files/Zodiak.exe

PM MAIL   Вверх
User
Дата 12.4.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



А можно узнать как ты формировал эту кодировку?

('210744192204202024200851210823211636230334230928230646231529221349220255',
'201334190356210220201450211323212133230826231517231233232227221948220844',
'201923190947210811201939211908220316231407232058231816240415230130221440',
'210119191540211403210131220103220912232004250255240016241008230821222029',

PM MAIL WWW   Вверх
Snowy
Дата 12.4.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



smile Ручками вводил.
на что время и потратил столько. Точне потратил, чтобы разобраться, что я навводил и как с этим теперь работать smile
Вычислял закономерность в распределении периодов. В результате получилась такая таблица.
Состоит она по сути из числа месяца, часа и минуты начала действия каждого знака. 3 пары символов на каждый знак на каждый знак.
При этом в таблицу не попали ведущие 010000 и 312359, т.к. они одинаковы для каждой строки. Поэтому я их исключаю и приклеиваю уже на стадии разбора.
PM MAIL   Вверх
User
Дата 14.4.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



Snowy - знаешь, что я нашел пока тестил её немного. В твоей таблице почемуто не отрабатывается число 01.01. и любой год, выдает что ничего нет. Может быть ты подскажешь как избаввиться от этого глюка?
Добавлено @ 13:29
Я уже пыталься подправить, токо еще хуже стала глючить!
PM MAIL WWW   Вверх
Snowy
Дата 14.4.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Видимо по умолчанию время - полночь. Поэтому и не прошло.
Строчку
if s1>s2 then begin
замени на
if s1>=s2 then begin
PM MAIL   Вверх
Dr Smth
Дата 18.4.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.10.2004
Где: New Podrezkovo

Репутация: нет
Всего: 1



PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.