//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "Unit1.h"
unsigned int in_val;
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try{
in_val= (Edit1->Text).ToInt();
}
catch(...)
{
Edit1->Text="Вводите только цифры!";
return;
}
Label1->Caption=IntToStr(in_val);
}
//-----------------------------
переменные...
В какую переменнюй можно указывать не только, числа но и символы
с буквами.
Пробовал через int невидит буквы, пробовал через AnsiString невидит буквы. Подскажите что мне делать.
К примеру код1:
int a,b;
a=StrToInt(MaskEdit1->Text);
b=1987;
К примеру код2:
AnsiString a,b;
a=StrToInt(MaskEdit1->Text);
b=4434;
???? и какую ошибку выдают код1 и код2??? и что такое "AnsiString невидит буквы"???
Цитата: Patr1ot
К примеру код2:
AnsiString a,b;
a=StrToInt(MaskEdit1->Text);
b=4434;
Бугага :D
А вы примерно ориентируетесь в системе типов C++?
Ы =) зачот!
Внимательно изучите класс AnsiString, там все есть!
Variant есть в VCL тип или VARIANT у мелкомягких
Да ну нафиг Variant - это мегазло
Я имею ввиду что к примеру, у нас на форме, расположено поле TEdit1
в которое мы записываем текст (типа пароль), после чего при нажатие на TButton1 Выполняется условие B=A, где B - истинный пароль, а А- тот который мы ввели в поле TEdit1.
Я имел ввиду что при вводе букв в поле TEdit и при установке значения для В(истинный пароль), программа 1) невыполняет условие 2) Пишет ошибку, что введите числа. Вот и все.
_______________________
И откуда такие берутся!!!
Как один из вариантов можно вот так написать :
Код:
Это как идея. А можно то по разному делать. И по событию ввода символа смотреть и использовать компонент с маской ввода.
PS: Вообще, название темы, как и первый пост не отражает сути проблемы, верней, он вообще ничего не отражает... Если хочется получить ответ на вопрос, стоит конкретней, правильней и по-русски описывать суть проблемы... А то получается, что "ой, я тут тыкнул - и вылезло что-то И оно неправильное какое-то...". Куда тыкнул, что вылезло? А фиг его знает... :)
Цитата: Patr1ot
Да вы достали!
Я имею ввиду что к примеру, у нас на форме, расположено поле TEdit1
в которое мы записываем текст (типа пароль), после чего при нажатие на TButton1 Выполняется условие B=A, где B - истинный пароль, а А- тот который мы ввели в поле TEdit1.
Я имел ввиду что при вводе букв в поле TEdit и при установке значения для В(истинный пароль), программа 1) невыполняет условие 2) Пишет ошибку, что введите числа. Вот и все.
_______________________
И откуда такие берутся!!!
Я имею ввиду что к примеру, у нас на форме, расположено поле TEdit1
в которое мы записываем текст (типа пароль), после чего при нажатие на TButton1 Выполняется условие B=A, где B - истинный пароль, а А- тот который мы ввели в поле TEdit1.
Я имел ввиду что при вводе букв в поле TEdit и при установке значения для В(истинный пароль), программа 1) невыполняет условие 2) Пишет ошибку, что введите числа. Вот и все.
_______________________
И откуда такие берутся!!!
Нет, это вы достали. Возьмите ЛЮБУЮ книгу по С++ и прочтите о типах и их преобразовании.
Если пользователь вводит всякую хню, то это не есть плохо. Во первых можно сравнивать переменные типа AnsiString:
Код:
AnsiString B="password";
if (Edit1->Text == B)
{
func();
}
else func2();
if (Edit1->Text == B)
{
func();
}
else func2();
Если такой вариант не нравится, то можно воспользоваться функцией strlen(char *str1, char *str2), которая сравнивает переменные типа char:
Код:
#include <string.h>
...
char B="password";
if (strlen(Edit1->Text.c_str(), B) == 0)
{
func();
}
else func2();
...
char B="password";
if (strlen(Edit1->Text.c_str(), B) == 0)
{
func();
}
else func2();
В случае если обе переменные равны, то функция возвращает значение 0, соответственно, если не равны, то возвращает значение отличное от нуля.
P.S.: А вообще, действительно, книги можно пачитать, там много написано интересного и полезного!!!
Второе: надо читать FAQ по BCB..
Третье: надо учить русский язык
Четвертое: надо пользоваться поиском
Пятое: надо читать правила - как создавать темы, как задавать вопросы, как вести себя на форуме
Шестое: есть специальная тема - Я начинающий, подскажите пожалуйста как...
Код:
void __fastcall TfrAddEditItem::edEdit1KeyPress(TObject *Sender,
char &Key)
{
if ( ((Key < '0') || (Key > '9')) && (Key != 8) )
Key = 0;
}
char &Key)
{
if ( ((Key < '0') || (Key > '9')) && (Key != 8) )
Key = 0;
}
Эту функцию необходимо выбрать в качестве обработчика OnKeyPress для текстового поля. Будут вводиться только цифры и Backspace
Тема переезжает в юмор. Автору последние китайское предупреждение.
Я не знаю BCB, поэтому обобщенно:
1) Перехватывать такие низкоуровневые события, как OnKeyDown когда пользователь ввел что-то - зачем? Лучше перехватывать событие типа contentChanged для модели компонента, в который осуществляется ввод.
2) Все что можно ограничить заранее, лучше ограничить используя маску ввода (валидатор) для компонента. Чтобы пользователь не вводил пароль из 15 произвольных символов, и нажав Еnter узнавал, что пароль должен состоять из цифр и иметь длину от 5 до 8 символов.
Цитата: iRain
Если такой вариант не нравится, то можно воспользоваться функцией strlen(char *str1, char *str2), которая сравнивает переменные типа char:
Ты уверен, что strlen?
Цитата: Patr1ot
Вопрос.
В какую переменнюй можно указывать не только, числа но и символы
с буквами.
Пробовал через int невидит буквы, пробовал через AnsiString невидит буквы. Подскажите что мне делать.
К примеру код1:
int a,b;
a=StrToInt(MaskEdit1->Text);
b=1987;
К примеру код2:
AnsiString a,b;
a=StrToInt(MaskEdit1->Text);
b=4434;
В какую переменнюй можно указывать не только, числа но и символы
с буквами.
Пробовал через int невидит буквы, пробовал через AnsiString невидит буквы. Подскажите что мне делать.
К примеру код1:
int a,b;
a=StrToInt(MaskEdit1->Text);
b=1987;
К примеру код2:
AnsiString a,b;
a=StrToInt(MaskEdit1->Text);
b=4434;
дак ты не правильно пишешь, папробуй так:
Код:
b = "четыре тысячи четыреста тридцать четыре";
[/QUOTE]
Не расстраивайтесь, мой юный друг. Не обращайте внимание на юмористов нашего форума, которые обвиняют Вас в невежестве. У Вас еще масса вариантов. Попробуйте типы:
Код:
bool
i_fool
char
unsigned char
short
unsigned short
i_stupid_idiot
long
unsigned long
float
double
i_fool
char
unsigned char
short
unsigned short
i_stupid_idiot
long
unsigned long
float
double
Уверен, что когда Вы попробуете все типы - Вы поймете, что какой-то Вам подходит больше всего.
Цитата: Lerkin
Не расстраивайтесь, мой юный друг. Не обращайте внимание на юмористов нашего форума, которые обвиняют Вас в невежестве. У Вас еще масса вариантов. Попробуйте типы:
Уверен, что когда Вы попробуете все типы - Вы поймете, что какой-то Вам подходит больше всего.
Код:
bool
i_fool
char
unsigned char
short
unsigned short
i_stupid_idiot
long
unsigned long
float
double
i_fool
char
unsigned char
short
unsigned short
i_stupid_idiot
long
unsigned long
float
double
Уверен, что когда Вы попробуете все типы - Вы поймете, что какой-то Вам подходит больше всего.
Жжошь!! Думаю некоторые типы вполне подойдут :D
Вот такому автору что с репутацией делать - опускать за дебилизм или поднимать за то что поднимает всем настроение?