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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2007, 23:56   #1
Махор
 
Регистрация: 26.11.2007
Сообщений: 4
По умолчанию Delphi Поиск по дате Именинника

Поздравления. По заданному списку фамилий напечатать каждому упомянотуму в списке поздравление к определённому празднику. Чтобы избежать шаблона, перечень желаемых выбирать как случайное подмножество из заготовленного списка (н-р: здоровья, счастья, долголетия и т.д.) Можно сделать переменным и название праздника - для универсальности программы.

Смысл вот в чом: вводим дату, а нам выводит фамилию, праздник(ДР) и поздравление к нему.

Вобщем задача куда сложнее массива, который я присылал, решите кто сможет, пожалуста)
Махор вне форума Ответить с цитированием
Старый 30.11.2007, 00:06   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

В чём собственно проблема? Не получается в цикле сравнить две переменные?
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 01.12.2007, 14:21   #3
Skypenok
 
Аватар для Skypenok
 
Регистрация: 01.12.2007
Сообщений: 5
Восклицание Решение

Код:
var
m:array[1..10000] of string;
f:textfile;
k,t,i,j:integer;
s,s1:string;
begin
assignfile(f,'dr.txt');
reset(f);
t:=0;
while not eof(f) do begin
inc(t);
readln(f,m[t]);
end;
closefile(f);
for i:=1 to t do begin
s:='';
for j:=1 to length(m[i]) do
if m[i][j]<>' ' then
s:=s+m[i][j]
else
break;
k:=0;
for j:=1 to length(s) do
inc(k);
if k>5 then begin
s1:=s;
k:=0;
s:='';
for j:=1 to length(s1) do 
if k<5 then begin
inc(k);
s:=s+s1[j];
end
else
break
end;
if s=me1.Text then begin
memo1.Visible:=true;
memo1.Text:=memo1.Text+m[i]+#13+#10;
s:='';
end;
end;
if memo1.Visible=false then
application.MessageBox('Именинников не обнаружено','Результат поиска',mb_ok);
end;
end.
В общем, я могу найти именниника по введёной дате и вывести его, но мне нужно ещё вывести сообщение-поздравление, причём оно должно быть персональное, т.е не повторяться. И может кто-нибудь знает как поставить защиту в компоненте TMaskEdit, чтобы месяц был только до 12 и числа месяца до 31, а др. цифры не вводились.

Цитата:
Код вставляем в тег [CОDE][/СОDЕ] или пользуемся кнопкой # (расширенный режим). Модератор.

Последний раз редактировалось AlDelta; 02.12.2007 в 20:04. Причина: Тег [CODE].
Skypenok вне форума Ответить с цитированием
Старый 01.12.2007, 14:48   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
как поставить защиту в компоненте TMaskEdit, чтобы месяц был только до 12 и числа месяца до 31, а др. цифры не вводились.
Что за доморощенные методы?
Используйте штатный ТMonthCalendar и не морочьте себе голову...
Не нравится он - возьмите три комбобокса и засуньте в них числа от 1 до 31, месяцы от января до декабря и интервал лет, который вам нужен...
Избежите тем самым ввода бредятины в окно задания даты...
mihali4 вне форума Ответить с цитированием
Старый 01.12.2007, 17:21   #5
Skypenok
 
Аватар для Skypenok
 
Регистрация: 01.12.2007
Сообщений: 5
По умолчанию

Я не понимаю зачем использовать ТMonthCalendar или комбокс, если задача замечательно работает с TMaskEdit, что наглядно видно в программе, просто необходимо установить защиту для ввода некорректных данных, а при использование др. компонентов придётся изменять решение...К тому же это не доморощенный метод, а более эффективный в данном случае, т.к. поиск осуществляется по числу и месяцу-обработка комплексная.
Skypenok вне форума Ответить с цитированием
Старый 01.12.2007, 17:44   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
просто необходимо установить защиту для ввода некорректных данных
Так вот, самым эффективным методом защиты как раз и является невозможность ввода чего-либо другого, кроме даты, что я вам и предложил.
Ну, не дошло сейчас - дойдет попозже...
mihali4 вне форума Ответить с цитированием
Старый 01.12.2007, 19:58   #7
Skypenok
 
Аватар для Skypenok
 
Регистрация: 01.12.2007
Сообщений: 5
По умолчанию

Подскажите pleas, задачу без защиты не принимают, в понедельник сдавать.... а с комбоксом не умею работать, куда его вставлять, как потом сравнивать с текстовым файлом ума не приложу... (в ТMonthCalenda год не нужен, комбокс тёмный лес, покажите на примере, если не трудно).
Skypenok вне форума Ответить с цитированием
Старый 01.12.2007, 20:23   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Пример работы с комбобоксами:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ShellCtrls, Grids, MPlayer, DB, DBTables,
  DBGrids, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    ComboMonth: TComboBox;
    ComboDay: TComboBox;
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
ComboMonth.Clear;
ComboMonth.Items.Add('Выберите месяц');
for i:=1 to 12 do
ComboMonth.Items.Add(LongMonthNames[i]);
ComboMonth.ItemIndex:=0;
ComboDay.Clear;
ComboDay.Items.Add('Выберите дату');
for i:=1 to 31 do
ComboDay.Items.Add(IntToStr(i));
ComboDay.ItemIndex:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=ComboMonth.Text+', '+ComboDay.Text+' число';
end;

end.
mihali4 вне форума Ответить с цитированием
Старый 01.12.2007, 20:46   #9
Skypenok
 
Аватар для Skypenok
 
Регистрация: 01.12.2007
Сообщений: 5
По умолчанию

Спасибки, ты настоящий друг)))
Skypenok вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по дате. в чем ошибка?? missy БД в Delphi 6 20.06.2008 13:06
поиск Borland Delphi 7 n fh dxdj Помощь студентам 1 25.10.2007 19:33
Поиск по дате создания файла kayman БД в Delphi 1 14.09.2007 14:54
Поиск по дате создания файла kayman Общие вопросы Delphi 1 14.09.2007 10:36
как организовать поиск по дате... Pitbull БД в Delphi 18 24.06.2007 22:28