HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 31.05.2010, 14:16
jecka3000
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме:
2052341

Репутация: 95
По умолчанию

создал метод для проверки длинны номера:
Код:
public static int TryNum(int number)      
        {

            if (tb2.Text.Length < 7 || tb2.Text.Length > 12)
            {
                MessageBox.Show("Ошибка! Прочитайте инструкцию!", "Ошибка ввода");
                return 0;                          
            }
            else
            {
                return number;
            }
        }
применяю его в основной программе:

Код:
int num = Account.TryNum(tb2.Text);                 
                if (num != "<Ошибка>")
                {
отсюда несколько ошибок:
Код:
Элемент "tb2" не существует в текущем контексте. (Хотя на самом деле имя и все остальное правильное=))
дальше идет вообще бред=)
Код:
Невозможно объявить локальную переменную с именем "num" в этой области видимости, т.к. она придаст другое значение "num", которое уже используется в области видимости "родительский или текущий" для обозначения другого понятия
Это уже ругается на вот этот маленбкий кусочек кода в основной программе.

Код:
Оператор "!=" не может применяться к операндам типа "int" и "string"
 
Ответить с цитированием

  #2  
Старый 31.05.2010, 15:31
jecka3000
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме:
2052341

Репутация: 95
По умолчанию

проверяем переменную целая она или нет и переводим ее в string
 
Ответить с цитированием

  #3  
Старый 31.05.2010, 15:34
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

Цитата:
Сообщение от jecka3000  
проверяем переменную целая она или нет и переводим ее в string
дай сюда весъ метод TryInt.

edit: он не видит твой tb2 из другого класса. ты должен его сделать общедоступным. ещё надо инклудить forms
 
Ответить с цитированием

  #4  
Старый 31.05.2010, 15:40
jecka3000
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме:
2052341

Репутация: 95
По умолчанию

public static int TryInt(string strnum) //метод проверяет тип переменной
{
int tryme = 0;
try //проверяем тип переменной
{
tryme = int.Parse(strnum);
return tryme; //если переменная целого типа, возвращаем ее
}
catch //если тип не int, выводим предупреждение и возвращаем 0
{
MessageBox.Show("Ошибка! Прочитайте инструкцию!", "Ошибка ввода");
return 0; //возвращаем 0 в случае ошибки
}
}

public static int TryNum(int number)
{

if (tb2.Text.Length < 7 || tb2.Text.Length > 12)
{
MessageBox.Show("Ошибка! Прочитайте инструкцию!", "Ошибка ввода");
return 0;
}
else
{
return number;
}
}
 
Ответить с цитированием

  #5  
Старый 31.05.2010, 16:24
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

методы в принципе ок. у меня всё работает. я бы ещё поменял всё int на long, так как 12-значное число слишком велико для int. и раз ты уже передаёшь значение number функции TryNum, то и проверяй его а не tb2.Text. тоесть так if (number.ToString().Length < 7 || number.ToString().Length > 12). вызывай функцию например в коде главной формы так TryNum(long.Parse(tb2.Text))

edit:если ты не хочешь вызывать функции из кода формы, а производишь вызов из другого класса, то передавай класс формы как параметр функции или параметр конструктора класса. по другому ещё можно определитъ таблицы как статические свойства формы и обращатъся к ним типа Форма.Свойство.

Последний раз редактировалось BrainDeaD; 31.05.2010 в 16:39..
 
Ответить с цитированием

  #6  
Старый 01.06.2010, 15:28
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

Цитата:
Сообщение от jecka3000  
public static int TryInt(string strnum) //метод проверяет тип переменной
{
int tryme = 0;
try //проверяем тип переменной
{
tryme = int.Parse(strnum);
return tryme; //если переменная целого типа, возвращаем ее
}
catch //если тип не int, выводим предупреждение и возвращаем 0
{
MessageBox.Show("Ошибка! Прочитайте инструкцию!", "Ошибка ввода");
return 0; //возвращаем 0 в случае ошибки
}
}

public static int TryNum(int number)
{

if (tb2.Text.Length < 7 || tb2.Text.Length > 12)
{
MessageBox.Show("Ошибка! Прочитайте инструкцию!", "Ошибка ввода");
return 0;
}
else
{
return number;
}
}
охренеть.

TryParse уже не попсово?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #7  
Старый 31.05.2010, 15:33
jecka3000
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме:
2052341

Репутация: 95
По умолчанию

да мне кажется что все бы заработала если бы тут if (tb2.Text.Length < 7 || tb2.Text.Length > 12)
он не ругался и не говорил что tb2 не существует в данном контексте
 
Ответить с цитированием

  #8  
Старый 31.05.2010, 16:54
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Цитата:
edit: он не видит твой tb2 из другого класса. ты должен его сделать общедоступным. ещё надо инклудить forms
млять, всегда удивлялся как компилер может такое пропускать?

ЗЫ читая тему пришел к выводу что в сишарп лезут люди, далекие от ООП.
Сцуко, ненавидел дельфи за то что говнокодеры так и прут, в шарпе видимо все еще хуже
 
Ответить с цитированием

  #9  
Старый 31.05.2010, 17:03
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

Цитата:
Сообщение от GhostOnline  
ЗЫ читая тему пришел к выводу что в сишарп лезут люди, далекие от ООП.
Сцуко, ненавидел дельфи за то что говнокодеры так и прут, в шарпе видимо все еще хуже
ну пацанчик походу только начинает. все мы когда-то начинали. ооп в принципе простая вещь, но допереть до неё сразу не просто. зато в один момент приходит озарение, и всё идёт как по маслу.
Цитата:
Сообщение от GhostOnline  
млять, всегда удивлялся как компилер может такое пропускать?
ну так компайлер ошибку палит. он только не может сказать какого класса объект, так как возможно в каждом классе есть свой tb2.
 
Ответить с цитированием

  #10  
Старый 31.05.2010, 19:58
jecka3000
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме:
2052341

Репутация: 95
По умолчанию

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение темы. Форум - Faq. Вопросы и Ответы. Егорыч+++ Правила форума 55 16.06.2010 01:07
Форум - Faq. Вопросы и Ответы. Егорыч+++ Правила форума 0 07.06.2008 18:52
Мультимедийные Обучающие Курсы TeachPro Java VenTeL ПО для Web разработчика 8 24.04.2008 15:38



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ