Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > прога выдает ошибку =(


Автор: QuiZZeS 14.4.2009, 09:00
Код
void LoadFromFile(String ^File)
            {
                String ^d,^z,^b=File::ReadAllText(File);
                while(b->Length>0)
                    {
                        int i=b->IndexOf("/");
                        d=b->Substring(0,i); textBox2->Text=b;
                        while (d->Length>0)
                            {
                                int in=0,j=d->IndexOf(";");
                                in=in+1;
                                TextBox^ p = (TextBox^)this->Controls["textBox"+in.ToString()];
                                z=d->Substring(0,j);
                                p->Text=z; // здесь выдает ошибку "В экземпляре объекта не задана ссылка на объект"
                                d=d->Substring(j+1);
                            }
                        b=b->Substring(i+1);
                        
                    }
                }

Автор: QuiZZeS 14.4.2009, 09:35
нашел это:
При запуске приложения появляется следующее сообщение об ошибке:System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
Такое сообщение может появляться в том случае, если функция объявлена неправильно. Оно обычно появляется, когда параметры функции объявлены по значению, а не по ссылке.
обьясните =(

Автор: Albor 14.4.2009, 09:37
В VС нет такого синтаксиса. Упс. Это на C#? А в названии темы С++. Проверь чему равно j. Может в тексте нет ";".

Автор: QuiZZeS 14.4.2009, 09:48
это Visual C++ 2008 =)
windows form application

Автор: Albor 14.4.2009, 09:53
Цитата(QuiZZeS @  14.4.2009,  08:48 Найти цитируемый пост)
это Visual C++ 2008 =)
windows form application 

Я с этим не работал, поэтому не знаю. Но возможную причину указал выше.

Автор: cutwater 14.4.2009, 09:54
Это не совсем С++ к Вашему сведению. А собственно С++/CLI

Автор: shuttle 14.4.2009, 10:18
если точнее то CLR

Автор: Cheloveck 14.4.2009, 10:21
Код

TextBox^ p = (TextBox^)this->Controls["textBox"+in.ToString()];

 smile что это за маразм? Если дотНЕТ и допускает такое, то я бы всеми фибрами души и клетками мозга воспротивился такому подходу. Положи все свои текстбоксы в массив и перебирай по человечески.

З.Ы. Код в форуме пиши в теге "код".

Автор: xvr 14.4.2009, 11:28
Похоже у тебя p NULL. Видимо не нашелся соотвествующий контрол "textBox"+in.ToString(). Проверь, чему равен i на момент слома.

Автор: QuiZZeS 14.4.2009, 11:30
а как сделать чтобы некоторое количесто textBox'ов воспринимались как массив
например чтобы запустить цикл а он бы 
textBox1->Text=z;
textBox2->text=z;
....
textBox20->text=z;

Автор: Cheloveck 14.4.2009, 12:29
Цитата

а как сделать чтобы некоторое количесто textBox'ов воспринимались как массив

Код

TextBox ^ textBoxArray[3];
TextBox ^textBox1 = gcnew TextBox(); // кажется так в дотНЕТе.
TextBox ^textBox2 = gcnew TextBox(); 
textBoxArray[0] = textBox1;
textBoxArray[1] = textBox2;
// или даже так.
textBoxArray[2]  = gcnew TextBox();

Зато потом ты просто пишешь
Код

for(int i = 0; i < 3; i++)
{
    // ...
    textBoxArray[i]->Text = z;
}

Примерно так...

Автор: Gluttton 14.4.2009, 13:20
Цитата

а как сделать чтобы некоторое количесто textBox'ов воспринимались как массив


http://msdn.microsoft.com/ru-ru/library/system.array.aspx

В твоем случае по-моему будет так:

Код

array<TextBox^>^ tbArray=gcnew array<TestBox^>^;





Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)