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


Автор: Sergey_P 6.9.2007, 14:45
Необходимо написать программу, которая читает изображения из файла в массив byte и в поток.
Из потока затем инфа передается в Image, показываются изображения.

С этим справился, однако возник вопрос.


В процедуре public void Form1_Load.
Создаю массив byte, в него из потока гружу данные о картинке.

По нажатию кнопки.
Читаю данные из массива бит в поток.
Из потока гружу данные в Image.


Получается, что (привожу только часть) в процедуре public void Form1_Load код такой:
Код

int pictures;
pictures = files.GetUpperBound(0);           
byte[][] stream_byte;
stream_byte = new byte[pictures][];


при нажатии кнопки:
Код

MessageBox.Show(pictures.ToString(), "В папке картинок:",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
...
fs.Read(stream_byte[i], 0, (int)fs.Length);
...


Однако получаю ошибки при компиляции (сообщения об ошибке на каждую переменную, но привожу здесь только 2 сообщения)

The name "pictures" does not exist in the current context
The name "stream_byte" does not exist in the current context



Вопрос, куда поместить объявление переменной и массива бит для того, чтобы они были видны из любого места программы?

Автор: archeg 6.9.2007, 16:03
Цитата(Sergey_P @  6.9.2007,  14:45 Найти цитируемый пост)
Вопрос, куда поместить объявление переменной и массива бит для того, чтобы они были видны из любого места программы?

В C# понятие глобальных переменных нет. Фактически, можно считать статические паблик филды - глобальными переменными, только нужно старатся использовать статику по-меньше.

А в даном случае просто добавь филды у формы:
Код

partial class Form1 : Form
{
    private int pictures;
    private byte[][] stream_byte;

    //........
}


А в общем обязательно считывать данные в поток? Сам Image поддерживает считывание из файла (см. статический ReadFromFile или FromFile - не помню). Да и запись в поток там есть

Автор: Sergey_P 6.9.2007, 16:55
Огромное спасибо!! smile
 
Картинки записываю в память для быстродействия (они потом будут быстро меняться).

P.S.
...так, статические использовать поменьше, а надо классы(данных) использовать, я верно понимаю?


Автор: archeg 7.9.2007, 13:56
Цитата(Sergey_P @  6.9.2007,  16:55 Найти цитируемый пост)
...так, статические использовать поменьше, а надо классы(данных) использовать, я верно понимаю?

Статику не передашь, как аргумент, в ней легче запутаться и статика - это какой-то своеобразный отход от иерархии, которая, как известно, позитивное явления по-скольку дает легкое восприятие кода приложения. Легкое восприятие кода приложения - меньше багов и лучше архитектура, что снова же приводит к еще более легкому восприятию и быстроте как разработки, так и работы самой программы.

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