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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2007, 22:14   #1
BBagi
Пользователь
 
Аватар для BBagi
 
Регистрация: 25.12.2007
Сообщений: 11
Смущение Задачи помогите увидеть ошибку!

1 задача

Задача такова что на форме есть кнопка и она при нажатии двигается в право (допустим по 5 )доходит до конца формы и возвращется опятьже медленно с каждым нажатием в начало.
procedure TForm1. нажатие
begin
if Button1.Left>600 then Button1.left:=Button1.left-5 else
if Button1.Left<600 then Button1.left:=Button1.left+5 else Button1.Left:=Button1.left+5;
end; end.

Ошибка то смехотворная) сама ставлю условие и сама его пытаюсь перебить) С размером формы. Идея была заменить на переменную и менять лишь знак) Но идея осталась лишь идеей и кнопка дергается как паролитик в конце формы(
если не сложно посмотрите свежим взглядом)

2 задачка
Несчастный паскаль и модуль crt

В центре красного экрана стоит белая буква D. Затем она плавно переходит в квадрат, который расширяется до границы экрана.

1 полож D
2 полож
DDD
D D
DDD
и так растекается по всему экрану

Закрасить т я закрасила и в центр вывела а вот цыкл для 2 положения и тд не могу составить!
Заранее спс=)
BBagi вне форума Ответить с цитированием
Старый 26.12.2007, 22:23   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

1 задача
А где проверка на Button1.Left=600 ???
Она у вас попадает на 600 и не знает, что ей делать...
mihali4 вне форума Ответить с цитированием
Старый 26.12.2007, 22:45   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А где проверка на Button1.Left=600 ???
После 2-го else вообще-то. Только от этого не легче.
Для таких целей нужно завести переменную скорости или направления. Подойдёт, например, TButton.Tag:
Код:
procedure TForm1.FormCreate(Sender:TObject);
begin
Button1.Tag:=5;
end;
procedure TForm1.Button1Click(Sender:TObject);
begin
if (Button1.Left<-v) or (Button1.Left+Button1.Width>Form1.Width-v) then v:=-v;
Button1.Left:=Button1.Left+v;
end;
Somebody вне форума Ответить с цитированием
Старый 27.12.2007, 00:10   #4
BBagi
Пользователь
 
Аватар для BBagi
 
Регистрация: 25.12.2007
Сообщений: 11
По умолчанию

Да да что-то такое=) я вот плутала с or=)

а вот это можешь расшифровать
FormCreate(Sender:TObject);
BBagi вне форума Ответить с цитированием
Старый 27.12.2007, 00:27   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от BBagi Посмотреть сообщение
Да да что-то такое=) я вот плутала с or=)

а вот это можешь расшифровать
FormCreate(Sender:TObject);
Это обработчик события создания формы.
В инспекторе объектов открываем вторую вкладку (событий) и делаем двойной щелчок по пустому полю против OnCreate.
В получившийся контейнер копируем код.
mihali4 вне форума Ответить с цитированием
Старый 27.12.2007, 00:41   #6
BBagi
Пользователь
 
Аватар для BBagi
 
Регистрация: 25.12.2007
Сообщений: 11
По умолчанию

Мерси.... с первой разабралась полностью) Осталась 2 я(
BBagi вне форума Ответить с цитированием
Старый 27.12.2007, 18:43   #7
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Теперь 2-я задачка.
Цитата:
Сообщение от BBagi Посмотреть сообщение
Несчастный паскаль и модуль crt
В Delphi для Win консоли это было бы хуже...
Если квадрат имеется в виду по координатам (на экране это ближе к прямоугольнику), то вот:
Код:
uses crt;
const maxx=80; const maxy=25;
var n,i:integer;
begin
textbackground(4); textcolor(15);
for n:=0 to 25 div 2 do begin
    clrscr;
    gotoxy((maxx+1) div 2-n,(maxy+1) div 2-n);
    for i:=0 to 2*n do write('D');
    for i:=-n+1 to n-1 do begin
        gotoxy((maxx+1) div 2-n,(maxy+1) div 2-i);
        write('D','D':2*n);
        end;
    gotoxy((maxx+1) div 2-n,(maxy+1) div 2+n);
    for i:=0 to 2*n do write('D');
    delay(10000);
    end;
readln;
end.
Somebody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку Дима82 Помощь студентам 4 19.05.2008 15:05
Помогите найти ошибку JOFRIF Помощь студентам 8 22.04.2008 14:22
Помогите найти ошибку NeiL Общие вопросы Delphi 7 04.03.2008 07:14
Помогите найти ошибку Рената Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2008 04:29
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15