Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 921

/ вопрос решён /

Приветствую, уважаемые эксперты!
Как сделать проверку на то, что введённый текст в Edit числа
и они равны8 или 16 или 32 и т.д

Адмирал Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Адмирал (статус: Посетитель)
Вопрос отправлен: 16 января 2011, 09:43
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

// Функция, проверяющая, что в AEdit введено именно целое число
// и что это число является членом ряда 8, 16, 32, ..., 2^63.
// Если содержимое AEdit удовлетворяет условиям, то введённое
// число возвращается в параметре Value, а сама функция 
// Возвращает True.
function CheckEdit(AEdit: TEdit; var Value: Int64): Boolean;
var
  Bit: Byte; // Кол-во разрядов сдвига
begin
  Result:= TryStrToInt64(AEdit.Text, Value); // Попытка преобразовать текст в число
 
  if Result
    then begin // Проверка, что число = 2^Bit (3 <= Bit <= 63)
           for Bit:= 3 to 63 do
             if Value = Int64(1) shl Bit // 8, 16, 32, 64, ..., -9223372036854775808
               then Exit;
 
           Result:= False;
         end;
end;
 
// Обработчик нажатия на кнопку Button1
procedure TForm1.Button1Click(Sender: TObject);
var
  Value: Int64; // <-------- Вот ЭТО - ТВОЁ ЧИСЛО!!!111
begin
  if CheckEdit(Edit1, Value) // Преобразование строки в число и проверка
    then ShowMessage('Введено правильное число' + IntToStr(Value) + '.')
    else ShowMessage('Введено не число или неверное значение.'); 
end;

З.Ы. Впредь, прежде чем что-то сделать, подумай головой. От этого зависит мнение окружающих о тебе.
З.З.Ы. Накачай себе книжек для чайников и читай, читай, читай!

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 16 января 2011, 10:25
Оценка за ответ: 4

Комментарий к оценке: чо за хрень?

Мини-форум вопроса

Всего сообщений: 61; последнее сообщение — 18 января 2011, 12:04; участников в обсуждении: 7.

Страницы: [1] [2] [3] [4] [Следующая »]

16 января 2011, 11:40: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Толяныч

Толяныч (статус: 4-ый класс), 16 января 2011, 12:55 [#1]:

Во блин, ему разжевали, а он -1 ( " потому что я этого не понимаю" )
min@y™

min@y™ (статус: Доктор наук), 16 января 2011, 14:08 [#2]:

Цитата (min@y™):

Комментарий к оценке: чо за хрень?

Слышь, ты, двоечник! Ещё один гудок в мою сторону без аргументов, и я буду закрывать твои вопросы по мере их появления!
Надеюсь, админ эту оценку отменит, ибо несправедливо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 16 января 2011, 14:19 [#3]:

Нарушений правил сайта не наблюдается, хотя оценка неаргументированная. Автору вопроса выдано предупреждение.
min@y™

min@y™ (статус: Доктор наук), 16 января 2011, 14:20 [#4]:

Админ мне предложил поставить минус автору, но я этого делать не стал. Ибо, ГМИ.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Адмирал

Адмирал (статус: Посетитель), 16 января 2011, 19:14 [#5]:

if Value = 1 shl Bit // 8, 16, 32, 64, ..., 9223372036854775808 поясните плз эту строку
Вадим К

Вадим К (статус: Академик), 16 января 2011, 19:38 [#6]:

shl - операция битового сдвига влево.
1 shl 2 это будет 4
3 shl 1 будет 6
если подойти математически, то это
n shl m = (n * 2m) mod 232 (если конечно говорить о 32 битных числах).
Галочка "подтверждения прочтения" - вселенское зло.
Адмирал

Адмирал (статус: Посетитель), 16 января 2011, 20:10 [#7]:

а бит всегда кратен 3 чтоле? или чо?
Вадим К

Вадим К (статус: Академик), 16 января 2011, 21:00 [#8]:

бит не может быть кратен ничему. Потому что это минимальная единица измерения информации.
Галочка "подтверждения прочтения" - вселенское зло.
Адмирал

Адмирал (статус: Посетитель), 16 января 2011, 21:41 [#9]:

чот я не понял, вадим не мог бы ты написать код с событием нажатие на кнопку, и нужно чтобы цифры если она 8 16 32 64
в переменную записывалась, ну офк проверка что это вообще цифра
(Edit)
Адмирал

Адмирал (статус: Посетитель), 16 января 2011, 21:43 [#10]:

min@y™: ну или ты если не занят :D
Адмирал

Адмирал (статус: Посетитель), 16 января 2011, 21:43 [#11]:

с коментариями
min@y™

min@y™ (статус: Доктор наук), 17 января 2011, 08:22 [#12]:

А чем мой код не подошёл? Он не работает, что ли?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Адмирал

Адмирал (статус: Посетитель), 17 января 2011, 12:25 [#13]:

ну пожалуста можно мне с событием нажатие на кнопку, и с тем чтобы записывалось в переменную, и ещё с комментарияи
min@y™

min@y™ (статус: Доктор наук), 17 января 2011, 12:44 [#14]:

Цитата (Адмирал):

ну пожалуста можно мне с событием нажатие на кнопку, и с тем чтобы записывалось в переменную, и ещё с комментарияи

И ты всё это хочешь за оценку "-1"? Да ещё с комментариями?
А РОЖА НЕ ТРЕСНЕТ??!!11
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Адмирал

Адмирал (статус: Посетитель), 17 января 2011, 13:46 [#15]:

Да я же пошутил, неужто для тебя так важна оценка? помойму важны знания(знаю банально ну да ладно) :P
min@y™

min@y™ (статус: Доктор наук), 17 января 2011, 14:24 [#16]:

Цитата (Адмирал):

неужто для тебя так важна оценка?

Оценка должна отражать правильность ответа. -1 заслуживает только матерный бред не по теме. Аргументируй, для начала, почему -1?

Цитата (Адмирал):

помойму важны знания

Перемешал мух с котлетами, теперь сам и хавай.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Адмирал

Адмирал (статус: Посетитель), 17 января 2011, 14:27 [#17]:

у меня нету аргументов, ну плиз сделай, извини я же пошутил :D
Вадим К

Вадим К (статус: Академик), 17 января 2011, 14:29 [#18]:

Да в том то и дело, что знаний у нас немного есть и мы, как добрые люди, хотим ими делиться. Но когда нам плюют в душу и говорят "знания важнее оценки"...
Можно ведь было в форуме расспросить, все бы рассказали, растолковали, а нет, куда проще поставить -1.
Единственная вина min@y™ - в том, что он написал достаточно оригинальное решение и забыл написать, что такое shl.
А это знают далеко не все даже продвинутые программисты. Недавно, я общался с человеком, очень сильным java разработчиком, который ведет очень крупный проект и он ничего не знал о битовых операциях вообще.

to stason: я думаю, единственное правильное решение для данного случая - извиниться перед min@y™, исправить ему оценку, как минимум до 4 и люди потянутся. И в будущем, лучше задать на минифоруме сотню тупых вопросов, чем ставить -1.
Галочка "подтверждения прочтения" - вселенское зло.
Адмирал

Адмирал (статус: Посетитель), 17 января 2011, 14:36 [#19]:

я хотел поменять оценку, но нельзя
Вадим К

Вадим К (статус: Академик), 17 января 2011, 14:44 [#20]:

было бы только желание. поменять можно. например написав Ерёмин А.А. - он администратор и может это сделать. Было бы только желание.
Галочка "подтверждения прочтения" - вселенское зло.

Страницы: [1] [2] [3] [4] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.03 сек.