Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
36 / 36 / 15
Регистрация: 08.12.2014
Сообщений: 171
1

Неккоректная передача значений глобальных переменных

08.12.2014, 16:29. Показов 1108. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

При вызове функции передаю ей некоторые элементы глобального массива StringBuilder'ов

C#
1
2
3
4
5
case "takefact":
    answer = takeFact();
    if (answer.Contains("sucsess"))
        WriteToDraft(command[1].ToString(), command[6].ToString(), "fact");
    return answer;
Но при переходе в функцию WriteToDraft() получаю, что первый параметр равен "а", а второй "с"

Подскажите в чем проблема?

Вот как выглядит начало функции

C#
1
2
3
4
5
      public void WriteToDraft(string client, string dateRecive, string planOrFact) 
        {
            DateTime date = Convert.ToDateTime(dateRecive);
            ...
         }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2014, 16:29
Ответы с готовыми решениями:

Передача значений переменных или ссылок, неконтролируемое изменение переменных
// заголовок класса ObservableCollection<LineDom> Method1; Method1 = new...

Передача значений переменных через сокет
Добрый всем вечер. Вопрос: имеется клиент, он должен передать серверу 4 переменных. Сервер должен...

Создание глобальных переменных
тобы объявлёные переменные а=2,b=1 из одной функции (напрмер private static void Main()) были уэе...

Передача глобальных переменных
Здравствуйте. Подскажите пожалуйста. Я работал под windows в visual studio. Там было разработано...

5
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
08.12.2014, 16:34 2
Vladar107,
А какое содержимое переменной command?
С нее же и берутся параметры
0
36 / 36 / 15
Регистрация: 08.12.2014
Сообщений: 171
08.12.2014, 16:37  [ТС] 3
XRoy,
Если судить по дебаггеру, то на момент вызова значения нужные, но когда управление передается функции они такие, как я написал выше. По сути там две строки длиной где-то 10 символов
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
08.12.2014, 17:23 4
Vladar107,
Возможно где-то меняется массив глобальных переменных в другом потоке, покажите больше кода
0
36 / 36 / 15
Регистрация: 08.12.2014
Сообщений: 171
09.12.2014, 11:43  [ТС] 5
XRoy,
вот здесь вызывается функция commandSelect от глобального параметра
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
               try
            {
                int i = 0;
                string stringSend = commandSelect(command[4]); //выполняем команду
                ParserSend(stringSend);
                while (send[i] != null)
                {
                    dataSend = Encoding.ASCII.GetBytes(send[i].ToString());
                    i++;
                    if (client.GetStream().CanWrite)
                    {
                        await client.GetStream().WriteAsync(dataSend, 0, dataSend.Length); //отправляем результат клиенту
                        client.Close();
                    }
                }
            }
           catch (Exception e)
            {
                conn.Close();
                addLog(date + ": " + command[0] + " " + e.Message);
                dataSend = Encoding.ASCII.GetBytes("no"); //получаем баййты сообщения "no"
                if (client.GetStream().CanWrite)
                {
                    client.GetStream().Write(dataSend, 0, dataSend.Length); //отправляем результат клиенту
                    client.Close();
                }
            }
в функции takeFact() значение глобальным переменным нигде не присваевается
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
09.12.2014, 14:04 6
Лучший ответ Сообщение было отмечено Vladar107 как решение

Решение

Vladar107,
Вообще попробуйте так написать, и проверить что попадет в метод
C#
1
2
3
4
5
6
            if (answer.Contains("sucsess"))
            {
                string client = command[1].ToString();
                string data = command[6].ToString();
                WriteToDraft(client, data, "fact");
            }
0
09.12.2014, 14:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2014, 14:04
Помогаю со студенческими работами здесь

Потеря значений глобальных переменных.
Заметил (и не только я), что Access 97 иногда сбрасывает значения глобальных переменных. Пару раз в...

Передача из одной формы в другую с использованием Класса Глобальных переменных
Доброго времени суток. Пишу программу и возникла ошибка. Из формы 1(Main) в форму 2(deleted) не...

Просмотр значений глобальных переменных при отладке
Есть ли возможность в C++ Builder 10.3 при отладке проcматривать значения глобальных переменных?

Что правильней при работе с функциями: передача аргументов или создание глобальных переменных
Что правильней при работе с функциями: передача аргументов или создание глобальных переменных и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru