Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/54: Рейтинг темы: голосов - 54, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51

Доступ к переменной из другого метода

17.06.2013, 16:02. Показов 11078. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день! Подскажите пожалуйста, как реализовать доступ к переменной fileLength? Метод dataLengthReader должен быть void. Например что бы результат вычислений данного метода был доступен в Savescreen().

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
28
29
30
31
32
33
34
35
36
public class MainForm : Form
    {
        public int fileLength;
        private MessageBasedSession mbSession;
        private IAsyncResult asyncHandle = null;
    }
 
private void SaveScreen()
        {
            try
            {
                asyncHandle = mbSession.BeginWrite("MMEM:DATA? \"c:\\hcopy.jpg\"", new AsyncCallback(OnWriteComplete), null);
                asyncHandle = mbSession.BeginRead(mbSession.DefaultBufferSize, new AsyncCallback(fileDataLength), null);
                Wait();
                
            }
            catch
            {
 
            }
        }
 
private void dataLengthReader(IAsyncResult result)
        {
            try
            {
                string responseString = mbSession.EndReadString(result);
                responseString = responseString.Replace("#", string.Empty);
                int lengthNumber = Convert.ToInt32(responseString.Substring(0, 1));
                fileLength = Convert.ToInt32(responseString.Substring(1,lengthNumber)); //Вот к этой
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2013, 16:02
Ответы с готовыми решениями:

Присвоение переменной одного метода значения из другого метода
Есть метод А(), в которой в переменную int a присваивается 34; И есть метод В(), в которой в переменную int b присваивается А().а :) ...

Java доступ к переменной из другого метода
Здравствуйте, подскажите пж-та, только начинаю изучать java, возник вопрос - пытаюсь сделать калькулятор и хочу записать выполняемое...

Как получить доступ к переменной из другого метода с++
Хочу чтоб вводились дни по месяцам, например если февраль то не может быть в месяце 30 дней. Сделал функцию которая будет это возвращать,...

10
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.06.2013, 16:11
Venethi,
1)передавать ссылку на форму
2)передавать само значение
3) делать статическим полем
..
в общем: Ответы на 7 самых частых вопросов по WinForms
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
17.06.2013, 18:00  [ТС]
Psilon, вот хоть убейте, не понимаю как мне например из под метода SaveScreen() вывести значение fileLength в lable... вообще мне нужно вывести размер файла в этот метод что бы запустить запись файла на диск из потока.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
17.06.2013, 18:07
Цитата Сообщение от Venethi Посмотреть сообщение
Например что бы результат вычислений данного метода был доступен в Savescreen()
fileLength является нестатическим полем класса, а значит доступна в любом нестатическом методе этого класса. У вас всё уже сделано, может я не понимаю смысл вопроса?
Цитата Сообщение от Venethi Посмотреть сообщение
не понимаю как мне например из под метода SaveScreen() вывести значение fileLength в lable
C#
1
label1.Value = fileLength.ToString();
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
17.06.2013, 18:32  [ТС]
у меня вне метода dataLengthReader значение fileLength нулевое.
0
19 / 19 / 6
Регистрация: 10.09.2011
Сообщений: 83
18.06.2013, 01:36
а не проще ли сделать что бы метод возвращал значение и просто напросто его вызвать в нужном методе. просто не понятна строгая необходимость что-бы метод ничего не возвращал ( тоесть void ). А так можешь сделать все в 1 классе и глобальную переменную в ходе выполнения метода её просто присвоить и уже обращаешся к ней в другом методе.
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
18.06.2013, 09:52  [ТС]
Если я делаю вот так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private int fileDataLength(IAsyncResult result)
        {
            try
            {
                string responseString1 = mbSession.EndReadString(result);
                responseString1 = responseString1.Replace("#", string.Empty);
                int lengthNumber = Convert.ToInt32(responseString1.Substring(0, 1));
                fileLength = Convert.ToInt32(responseString1.Substring(1,lengthNumber));
                
                
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
            return (fileLength);
        }
То перестает работать метод :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void SaveScreen()
        {
            try
            {
                asyncHandle = mbSession.BeginWrite("MMEM:DATA? \"c:\\hcopy.jpg\"", new AsyncCallback(OnWriteComplete), null);
                asyncHandle = mbSession.BeginRead(mbSession.DefaultBufferSize, new AsyncCallback(fileDataLength), null); //здесь пишет Error 'int CableMeasurement.MainForm.fileDataLength(System.IAsyncResult)' has the wrong return type
                               
            }
            catch
            {
 
            }
        }
я видимо что-то не догоняю...)
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
18.06.2013, 10:24
Так конечно же нулевое значение. Во первых у вас методы
private void SaveScreen() и private void dataLengthReader(IAsyncResult result)

находятся в

public class MainForm : Form ?

Если да, то какое может быть присвоено значение переменной fileDataLength в этой строке, если вы не вызывали
метод private void dataLengthReader(IAsyncResult result)

asyncHandle = mbSession.BeginRead(mbSession.DefaultBuf ferSize, new AsyncCallback(fileDataLength), null);
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
18.06.2013, 11:50  [ТС]
akafeanor , простите, это у меня путаница с названиями методов, метод dataLengthReader() это fileDataLength().

То есть из asyncHandle = mbSession.BeginRead(mbSession.DefaultBuf ferSize, new AsyncCallback(fileDataLength), null); вызывается

private int fileDataLength(IAsyncResult result)

Да, они находятся в public class MainForm : Form

Добавлено через 56 минут
попробую изложиь проблему подробнее. Мне нужно с определенного устройства считать jpg картинку. Что бы ее считать мне нужно знать длинну файла.

Метод private void SaveScreen()
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void SaveScreen()
        {
            try
            {
                asyncHandle = mbSession.BeginWrite("MMEM:DATA? \"c:\\hcopy.jpg\"", new AsyncCallback(OnWriteComplete), null); //выдает строку в поток. Строка вида #577563????????
                asyncHandle = mbSession.BeginRead(mbSession.DefaultBufferSize, new AsyncCallback(fileDataLength), null); // читаем и отправляем строку в fileDataLength
                                
            }
            catch
            {
 
            }
        }
В методе private void fileDataLength(IAsyncResult result) обрабатываем эту строку и получаем нужное кол-во байт

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void fileDataLength(IAsyncResult result)
        {
            try
            {
                string responseString1 = mbSession.EndReadString(result);
                responseString1 = responseString1.Replace("#", string.Empty);
                int lengthNumber = Convert.ToInt32(responseString1.Substring(0, 1));
                GlobalVar.fileLength = Convert.ToInt32(responseString1.Substring(1,lengthNumber)); //записываю в глобальную переменную               
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }
Далее мне нужно это кол-во байт использовать для того что бы я смог сохранить файл с этого устройства. Но у меня периодически значение глобальной переменной остается нулевым. Пытаюсь отловить дебагером, но ничего не понимаю, то появляется значение, то нет... бред какой-то.
0
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 16
18.06.2013, 13:05
Могу ошибаться, но попробовать стоит:
C#
1
public static int dope{ get; set; }
А в функции fileDataLength() после преобразования в инт :
C#
1
dope = fileLength;
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
18.06.2013, 13:21  [ТС]
davps, не помогло, но все равно спасибо, решил что буду эту переменную использовать из под метода в котором она создается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2013, 13:21
Помогаю со студенческими работами здесь

Как получить доступ к переменной находящейся в одном методе из другого метода в пределах одного класса
Привет всем! Очередной вопрос новичка, допустим, у меня есть метод 1, в котором назначена переменная, и метод 2 в этом же классе,...

Обращение к переменной метода из другого метода
public class Solution { public static void main(String args) throws Exception { readText(); rectangle(); ...

Вызов переменной метода из другого метода
class A(): def m(self): number = x #переменный параметр - номер заявки, определяется во время выполнения метода ...

Обратиться к переменной из другого метода
public void test () { int16 per = 0; } public void test() { per++; ...

Изменение переменной из другого метода
Есть переменная "path", нужно создать новый метод, в котором эта переменная меняла бы значение. public static string PathDef() ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru