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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 17:51   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию Пояснить строку

Программисты! Объясните пожалуйста эту строку, только подробно желательно.

Код:
if (Key ==DecimalSeparator)
if((Edit1->Text).Pos(DecimalSeparator)!=0)
{
Key = 0;
return;
}
Что такое DecimalSeparator, Key, Pos(DecimalSeparator)!=0)
Почему используется так if((Edit1->Text).Pos(DecimalSeparator)!=0)

Что даёт Key = 0; Какую роль играет return; Ответьте пожалуйста. Заранне благодарю за помощь.
prikolist вне форума
Старый 25.03.2009, 18:06   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

http://www.delphibasics.ru/DecimalSeparator.php
Цитата:
Переменная DecimalSeparator используется в функциях отображения валюты и вещественного числа.

Значение DecimalSeparator по умолчанию '.', в зависимости от региона Windows.
Key - какая-то переменная.
Код:
Если Key равна DecimalSeparator, то
 если в Edit1 встречается DecimalSeparator,
  то Key = 0
  и выходим из функции
Цитата:
Что даёт Key = 0;
Из данного куска нельзя определить.
Цитата:
Какую роль играет return;
Выход из функции
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.03.2009, 18:08   #3
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Этого кусочка кода не хватает для понимания. Ну логически, DecimalSeparator - это разделитель строки(т.е. какой-то знак). Key - символ, который сравнивается с этим разделителем, потом в if идет поиск этого разделителя в строке Edit1->Text. А вот почему Key = 0 непонятно, т.к. по идее Key должен быть символом. Если Key - это число, то (Edit1->Text).Pos(DecimalSeparator)!=0 не имеет смысла.
Hollander вне форума
Старый 25.03.2009, 18:11   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А вот почему Key = 0 непонятно, т.к. по идее Key должен быть символом. Если Key - это число, то (Edit1->Text).Pos(DecimalSeparator)!=0 не имеет смысла.
Да, Key - это символ. И ему присваивается код 0 (конец строки, например).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.03.2009, 18:13   #5
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Радость

Вот код полностью. Объясните пожалуйста своими словами как вы понимаете его, чтоб я тоже его так понял.
Код:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
// коды запрещенных клавиш заменим нулем, в результате
// символы этих клавиш в поле редактирования не появятся
// Key — код нажатой клавиши
// проверим, является ли символ допустимым

 if(( Key >= '0') && ( Key <= '9')); // цифра
 

// Глобальная переменная Decimalseparator
// содержит символ, используемый в качестве разделителя
//I при записи дробных чисел
 if ( Key == DecimalSeparator)
 if ( (Edit1->Text).Pos(DecimalSeparator) != 0)
 {
  Key =0; // разделитель уже введен
  return;
 }
 if (Key == VK_BACK) // клавиша <Backspace>
  return;
 if ( Key == VK_RETURN) // клавиша <Enter>
 {
  Edit2->SetFocus() ;
  return;
 }
// остальные клавиши запрещены
 Key =0; //не отображать символ
}

//---------------------------------------------------------------------------


void __fastcall TForm1::Edit2KeyPress(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 {
 if ( ( Key >= '0') && ( Key <= '9')) // цифра
 return;
 if ( Key == DecimalSeparator)
 if ( (Edit2->Text).Pos(DecimalSeparator) != 0)
 {
  Key =0; // разделитель уже введен
  return;
 }
 if (Key == VK_BACK) // клавиша <Backspace>
  return;
 if (Key == VK_RETURN) // клавиша <Enter>
 {
  Button1->SetFocus(); // переход к кнопке Вычислить
// I повторное нажатие клавиши <Enter>
// активизирует процесс вычисления тока
  return;
 }
 }}

Последний раз редактировалось prikolist; 25.03.2009 в 18:17.
prikolist вне форума
Старый 25.03.2009, 18:16   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от prikolist
Вот код полностью
У вас же тут все подробно расписано.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.03.2009, 18:19   #7
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Да, но не описанно какую роль играет DecimalSeparator, pos, Key что делает return. Я просто не знаю именно этих трёх терминов, как их использовать и для чего применять.
prikolist вне форума
Старый 25.03.2009, 18:33   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

У вас там все написано:
Цитата:
// Key — код нажатой клавиши
Цитата:
// Глобальная переменная Decimalseparator
// содержит символ, используемый в качестве разделителя
//I при записи дробных чисел

Цитата:
что делает return
Про это я уже написал

Цитата:
pos
Это функция, которая ищет подстроку в строке.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.03.2009, 18:36   #9
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Спасибо, постараюсь разобраться. Если кто может, проилюстрируйте пожалуйста пример только на другом коде, с DecimalSeparator, чтоб закрепить, в каких случаях его использовать.
prikolist вне форума
Старый 25.03.2009, 18:40   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Если кто может, проилюстрируйте пожалуйста пример только на другом коде, с DecimalSeparator, чтоб закрепить, в каких случаях его использовать.
Я вам привел ссылку во втором посте! Неужели так сложно посмотреть?
Там и пример найдете.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59
Задача на строку Witaliy Помощь студентам 2 23.02.2009 18:57
Перевернуть строку Манжосов Денис :) Общие вопросы Delphi 13 03.12.2008 04:37
Числа в строку DeDoK Общие вопросы Delphi 8 07.06.2008 00:08
Считать строку XATAB Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 10.04.2008 21:18