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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2012, 11:04   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию при правильном ответе число m должно увеличиваться на единицу

Здравствуйте, пишу проверку букв для кроссворда, при правильном вводе букв, которые составляет слово должна увеличиваться переменная M, но этого не происходит, так же надо при неправильном вводе увеличивать n на единицу и ответы вывести в мемо, исправьте, пожалуйста, код. Пишу на Borland Delphi 7

Код:
procedure TForm1.btn8Click(Sender: TObject);
var
  m,n:integer;
begin
      mmo1.Clear;
  m:=0;n:=0;


if  (edt2.text='ж') and (edt3.text='а') and (edt4.text='л') and (edt5.text='о') and (edt6.text='б') and (edt7.text='а') then  Inc (m) else

if (edt12.text='к') and (edt10.text='о') and (edt13.text='н') and (edt14.text='с') and (edt15.text='т') and (edt16.text='и') and (edt17.text='т') and (edt18.text='у') and (edt19.text='ц') and (edt20.text='и') and (edt21.text='я') then
           Inc (m) else
if (edt34.text='з') and (edt33.text='а') and (edt35.text='к') and (edt36.text='о') and (edt37.text='н') and (edt38.text='н') and (edt39.text='о') and (edt40.text='с') and (edt41.text='т') and (edt42.text='ь') then
        Inc (m) else
if (edt55.text='н') and (edt56.text='е') and (edt57.text='о') and (edt58.text='с') and (edt26.text='т') and (edt59.text='о') and (edt60.text='р') and (edt61.text='о') and (edt62.text='ж') and (edt63.text='н') and (edt64.text='о') and (edt65.text='с') and (edt66.text='т') and (edt67.text='ь') then Inc (m) else
if (edt72.text='п') and (edt73.text='р') and (edt74.text='а') and (edt75.text='в') and (edt76.text='о') and (edt77.text='с') and (edt78.text='п') and (edt79.text='о') and (edt80.text='с') and (edt81.text='о') and (edt82.text='б') and (edt83.text='н') and (edt84.text='о') and (edt85.text='с') and (edt86.text='т') and (edt87.text='ь') then

         Inc (m) else
if (edt107.text='п') and (edt108.text='р') and (edt109.text='а') and (edt110.text='в') and (edt111.text='о') and (edt112.text='н') and (edt113.text='а') and (edt114.text='р') and (edt115.text='у') and (edt116.text='ш') and (edt117.text='е') and (edt90.text='н') and (edt118.text='и') and (edt119.text='е') then

        Inc (m)  else
if (edt98.text='д') and (edt92.text='и') and (edt99.text='с') and (edt100.text='п') and (edt101.text='о') and (edt102.text='з') and (edt103.text='и') and (edt104.text='ц') and (edt105.text='и') and (edt106.text='я') then
        Inc (m)  else

if (edt8.text='з') and (edt3.text='а') and (edt9.text='к') and (edt10.text='о') and (edt11.text='н') then
        Inc (m) else

if (edt14.text='с') and (edt22.text='е') and (edt23.text='р') and (edt24.text='в') and (edt25.text='и') and (edt26.text='т') and (edt27.text='у') and (edt28.text='т') then Inc (m) else

if (edt16.text='и') and (edt29.text='с') and (edt30.text='к') then m:=m+1  else
if (edt30.text='в') and (edt20.text='и') and (edt32.text='н') and (edt33.text='а') then 
              Inc (m)  else

if (edt43.text='г') and (edt44.text='и') and (edt45.text='п') and (edt39.text='о') and (edt46.text='т') and (edt47.text='е') and (edt48.text='з') and (edt49.text='а') then
             Inc (m)   else
if (edt50.text='у') and (edt51.text='м') and (edt52.text='ы') and (edt40.text='с') and (edt53.text='е') and (edt54.text='л') then
             Inc (m)   else
if (edt68.text='п') and (edt60.text='р') and (edt69.text='а') and (edt70.text='в') and (edt71.text='а') or (edt71.text='о') then
             Inc (m)  else

if (edt120.text='г') and (edt108.text='р') and (edt121.text='а') and (edt122.text='ж') and (edt123.text='д') and (edt124.text='а') and (edt125.text='н') and (edt126.text='с') and (edt127.text='т') and (edt128.text='в') and (edt129.text='о') then

             Inc (m)    else
if (edt130.text='к') and (edt121.text='о') and (edt131.text='д') and (edt132.text='е') and (edt133.text='к') and (edt134.text='с') then

             Inc (m)    else
if (edt72.text='п') and (edt114.text='р') and (edt135.text='е') and (edt136.text='а') and (edt137.text='м') and (edt138.text='б') and (edt139.text='у') and (edt140.text='л') and (edt141.text='а') then

              Inc (m)    else
if (edt88.text='э') and (edt89.text='м') and (edt75.text='о')and (edt90.text='н') and (edt91.text='с') and (edt92.text='и') and (edt93.text='п') and (edt94.text='а') and (edt95.text='ц') and (edt96.text='и') and (edt97.text='я') then
                                                               Inc (m)else begin
                                                               n:=18-m;

        mmo1.Lines.Add('Правильно- '+inttostr(m)) ;
         mmo1.Lines.Add('Неправильно- '+inttostr(n));end;
               end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 31.10.2012, 11:12   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
...edt140.text=...
0_о мне бы ваше упорство...))))
Небольшой совет: освойте работу с массивами, структурами данных, динамическое создание компонентов, а потом перепишите Вашу программу с нуля.

Код:
else begin
          n:=18-m;
          mmo1.Lines.Add('Правильно- '+inttostr(m)) ;
          mmo1.Lines.Add('Неправильно- '+inttostr(n));end;
        end;
замените в этом куске кода слово else на точку с запятой
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 31.10.2012, 20:15   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
замените в этом куске кода слово else на точку с запятой
Походу, так увлекся сто с лишним едитов прописывать, что на автомате лишний блок else зарядил
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 31.10.2012, 23:55   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

с массивами могу работать, но edit запихнуть в массив не умею, в делфи новичек, поэтому использую знания, полученные на паскале, если можете, киньте пару ссылочек на то, что мне поможет)

даже если edit в массив и помещу, то как организовать проверку условия? код получится чуть поменьше, всего массивов по идее 18, так как 18 слов, можно для уменьшения кода использовать
Код:
with a[i] do
но сама проверка то такой же будет, приведите для наглядности пример кода
from dark to light)

Последний раз редактировалось Stilet; 01.11.2012 в 23:23.
Алексей_2012 вне форума Ответить с цитированием
Старый 01.11.2012, 07:01   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Выкиньте эдиты, мой Вам совет (если не боитесь потом потенциальной необходимости глубоко перекроить программу, конечно) и сделайте TStringGrid (вкладка Additional на палитре компонент). Установите ему Options-goEditing, чтобы редактировать вручную (но надо будет заморачиваться с обрезкой ввода от юзера при ручном редактировании, которую можно сделать по OnSetEditText), либо (что я больше советую) напишите обработчик нажатия клавиатуры на гриде (OnKeyUp/OnKeyDown/OnKeyPress по вкусу, но лучше с каждой разобраться какая оптимальнее)- вычисляя в нём выделенную клетку (свойства col row грида) вводить символ в клетку программно, учитывая только нужные буквы.
Также можно прицепить такую хитрую вещь как чёрные клеточки с номерами и "стрелочками" <>v^. Достаточно сохранять в свойстве Cells (для обычных клеток там просто буква или пусто) некий идентификатор, собственно, хоть саму запись типа '12>' и в обработчике OnDrawCell проверять, если первый символ строки - цифра - залить клетку чёрным и написать идентификатор, а если буква - ничего не делать.
Чтобы сделать проверку слов советую написать функцию, которая будет принимать признак гориз/вертикального слова и 3 номера - начальный индекс и конечный изменяющейся ячейки и индекс фиксированной (сама горизонтали или вертикаль), в зависимости от гориз/верт будет цикл по строкам или столбцам складывать каждую ячейку в результирующее слово и возвращать в виде результата.
Это довольно просто и вполне красиво в плане реализации, а если будете решать задачи подобно тому как сейчас - никогда не "вырастите" в умении, всегда надо стремиться усложнить и освоить новое.

Если будут сложности при реализации описанного (если Вы пойдёте этим путём, в смысле), свои попытки скиньте в архиве сюда, подсоблю по данному вопросу. А вот по эдитам Вашим даже как -то желания заниматься раскопками нет....
phomm вне форума Ответить с цитированием
Старый 01.11.2012, 19:42   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

со стринг гридом нет времени разбираться, завтра сдавать уже, поэтому помогите, пожалуйста с эдитами, но за совет спасибо)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 02.11.2012, 09:31   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

я все-таки решил сделать едитами, проект сегодня позже скину, оцените пожалуйста, а подскажите как его на сайт загрузить, а еще, если так можно сделать, напшите код, чтобы с помощью стрелок, а не табуляции можно было переключаться между всеми едитами, их 140 где-то как видите)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 02.11.2012, 09:50   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

запакуйте исходники в архив. Архив можно прикрепить к своему сообщению на форуме (смотри при ответе "Расширенный режим" - "Управление вложениями")
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2012, 20:36   #9
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

вот архив с программой, слушаю любую критику или похвалу, думаю для новичка не плохо кроссворд.rar
from dark to light)

Последний раз редактировалось Алексей_2012; 03.11.2012 в 00:52.
Алексей_2012 вне форума Ответить с цитированием
Старый 02.11.2012, 20:40   #10
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

жалко что музыку на фон добавить не получилось, выдало ошибку
Цитата:
[Error] Unit1.pas(7): Declaration expected but identifier 'mmsystem' found
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
phpbb:subsilver2, изменение ширины блока смайлов(при ответе), или почему браузеры игнорят явно заданую ширину ячейки? Пепел Феникса HTML и CSS 1 25.06.2012 09:29
Как написать программу так,чтобы в ответе выводило число и буквы,например 12 evro ? Knopo4ka Паскаль, Turbo Pascal, PascalABC.NET 3 19.02.2012 01:43
Число в Edit должно увеличиваться на 1 таймером DenSuper007x Помощь студентам 2 24.03.2008 10:59
При наведении на картинку она должна увеличиваться Xander JavaScript, Ajax 1 07.03.2008 18:11