Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179

Вернуть значение переменной метода в цикле

22.11.2015, 14:01. Показов 2849. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! подскажите как вернуть значение переменной SS в методе в цикле вот метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 public string Nameprog() 
        {
           
            fff();
            string ss="";
            Regex regex = new Regex("\\.(exe|dll)", RegexOptions.IgnoreCase);
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                if (regex.IsMatch(listBox1.Items[i].ToString()) && listBox1.Items[i].ToString() != string.Empty)
                {
                     ss = listBox1.Items[i].ToString();
                   
                }
            }
 
            return ss;
        }
Метод возвращает пустую строку но там два значения должно быть сижу туплю((
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2015, 14:01
Ответы с готовыми решениями:

Как вернуть значение i из метода после каждой итерации в цикле
Всем привет. Давно не задавал умных вопросов // Тут без комментариев Но затупил на ровном месте ...

Вернуть значение из метода
Доброго времени суток. Помогите пожалуйста решить вопрос. Есть класс с методом, есть глобальная переменная. Как вернуть значение из метода...

[wp 8.1] Вернуть значение из асинхронного метода
Есть код: public void openmyText() { string myTextit= LoadmyTextFromIsolatedStorage().ToString(); // не работает...

18
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 14:28
Цитата Сообщение от Keysi Посмотреть сообщение
Метод возвращает пустую строку
Значит неправильная регулярка или в списке нет совпадений.
Цитата Сообщение от Keysi Посмотреть сообщение
там два значения должно быть сижу туплю
Даже если так, метод вернет последнее.

Может попробовать использовать FileInfo, Directory, Path и проч. ?

Добавлено через 2 минуты
Что содержит listbox1 ?
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 14:30  [ТС]
правильная регулярка проверял месадж боксом, может покажеш на моем коде как использовать Path или Directory?

листбокс содержит:
СППП
UnityWeb.exe
flexcom.exe

ggg
flexcom.exe
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 14:36
Цитата Сообщение от Keysi Посмотреть сообщение
листбокс содержит:
И требуется получить список файлов .exe .dll, содержащихся в списке, так?
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 14:38  [ТС]
метод вернул UnityWeb.exe а остальные два невидит, если в цикле прописал MessageBox.Show(ss); то увидит три(

Добавлено через 41 секунду
Да
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 14:47
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(string.Join(Environment.NewLine,Nameprog()));
        }
 
        public string [] Nameprog()  //тогда следует получать МАССИВ строк, а не одну
        {
 
            //fff();
            
             return listBox1.Items.Cast<string>().Where(x => x.EndsWith(".exe") || x.EndsWith(".dll")).ToArray(); 
        }
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 15:07  [ТС]
смотри а если всетаки методом попробывал тут:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public string[] Nameprog() 
        {
           
            fff();
            string[] ss={""};
            Regex regex = new Regex("\\.(exe|dll)", RegexOptions.IgnoreCase);
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                if (regex.IsMatch(listBox1.Items[i].ToString()) && listBox1.Items[i].ToString() != string.Empty)
                {
                     ss = new  string[]{listBox1.Items[i].ToString()};
                     MessageBox.Show(ss[0].ToString()); // так выдает а при вызове метода нет
                   
                }
            }
 
            return ss;
        }
в коментах написал - всеравно что то у меня невыходит(
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.11.2015, 15:16
Лучший ответ Сообщение было отмечено Keysi как решение

Решение

Ну правильно, потому, что вы делаете то же самое, что и раньше, только в более извращенной форме. Вы не добавляете элемент в массив, а тупо его пересоздаете каждый раз с одним элементом. Почитайте про то, что такое массивы. Кроме того, в данном случае должен быть вообще не массив а List, ибо количество элементов заранее неизвестно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public List<string> Nameprog() 
        {
           
            fff();
            List<string> ss = new List<string>();
            Regex regex = new Regex("\\.(exe|dll)", RegexOptions.IgnoreCase);
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                if (regex.IsMatch(listBox1.Items[i].ToString()) && listBox1.Items[i].ToString() != string.Empty)
                {
                     ss.Add(listBox1.Items[i].ToString());       
                }
            }
 
            return ss;
        }
1
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 15:17
Лучший ответ Сообщение было отмечено Keysi как решение

Решение

Так накопить надо строки, ну или IEnumerable использовать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        public string[] Nameprog() 
        {
            List<string> executableList = new List<string>();
            
            fff();
            string[] ss={""};
            Regex regex = new Regex("\\.(exe|dll)", RegexOptions.IgnoreCase);
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                string item = listBox1.Items[i].ToString();
                if (regex.IsMatch(item) && item != string.Empty)
                {
                     executableList.Add(item);  
                }
            }
 
            return executableList.ToArray();;
        }
1
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 15:21  [ТС]
Спасибо всем Вспоминаю С# , а с массивами у меня всегда тяжко было немогу привыкнуть
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 15:25
Цитата Сообщение от Keysi Посмотреть сообщение
а с массивами у меня всегда тяжко
Не только с массивами, черт с ними с регулярками, но зачем логику к интерфейсу привязываешь?


Читать много букв, но, в твоем случае, просто необходимо.
Архитектура ПО в WinForms (FAQ & HowTo)
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 15:32  [ТС]
Не только с массивами, черт с ними с регулярками, но зачем логику к интерфейсу привязываешь?
Непонял?

И у тебя в коде return executableList.ToArray();; возвращает а как имя вернуть всетаки?)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 15:38
Цитата Сообщение от Keysi Посмотреть сообщение
Непонял?
Зачем бегаешь по листбоксу?
Листбокс должен лишь отображать какой-то список. И бегать нужно по списку, а не визуальному контролу.

Цитата Сообщение от Keysi Посмотреть сообщение
а как имя вернуть всетаки?)
Имя чего? Файла без .exe чтоли? Вопросы конкретней задавай.

Добавлено через 2 минуты
Только не говори, что имя переменной ss.
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 15:46  [ТС]
нет когда вызвал твой метод :
C#
1
MessageBox.Show(Nameprog().ToString());
он мне выдал system.string...... а не flexcom.exe и т.д.
а с листбоксом там длинная история))
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 15:50
И для чего я тебе писал
тут?
C#
1
MessageBox.Show(string.Join(Environment.NewLine,Nameprog()));

Не по теме:


Цитата Сообщение от Keysi Посмотреть сообщение
Вспоминаю С#
Плохо, когда не знаешь, а еще и забудешь..

0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 16:01  [ТС]
хорошо и последний вопрос как сделать чтоб не в одном месадж боксе помешалось а в двух?
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 16:21
Цитата Сообщение от Keysi Посмотреть сообщение
чтоб не в одном месадж боксе помешалось а в двух
Что ты хочешь увидеть в первом и что во втором? Формулируй уже нормально вопросы.
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.11.2015, 16:30  [ТС]
в первом месадже одно имя например flexcom.exe, во втором UnityWeb.exe а сейчас показывает методдом join объединенно в одном месадже
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 16:38
Неужели это так сложно
C#
1
2
foreach (string message in Nameprog()) 
    MessageBox.Show(message);
Ты даже мало-мальские основы поленился изучить, а уже рубишь с плеча регулярками и формами.
Осваивай с начала язык, а не с конца.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2015, 16:38
Помогаю со студенческими работами здесь

Как вернуть значение из рекурсивного метода?
День добрый. Не могу понять почему не работает return в функции. Хотел сделать поиск до первого совпадения по директориям, работает но...

Вернуть значение из метода (нажатие кнопки мышки)
Добрый вечер. Помогите идеей-мыслью, как такое реализовать... Значит, есть Сanvas, на котором нужно по щелчку мышкой сделать точку....

Вернуть значение из метода запущенного в потоке (Thread)
Добрый день, создал поток и стартую его. Он находится в одном проекте, обращаюсь к методу из другого проекта Thread mtConnect; ...

Как присвоить значение переменной если значение позже устанавливается в цикле?
Кратко: if($_SESSION != &quot;&quot;){ $row = mysql_num_rows(mysql_query(&quot;...&quot;)); if($row &gt; 0) $panel = &quot;&lt;a href='messages.php'&gt;&lt;div...

Вернуть значение переменной в get
Передаю значение &quot;b1 = true&quot;. Как вернуть это значение? bool b1 { get { /*Код*/ return b1; /*Здесь ошибка*/ } set { } }


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru