Массивы внутри типа
Участников: 2
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Массивы внутри типа
Господа, всем здравствуйте. Давно здесь не был, но теперь у меня появился повод вновь вернуться на форум с вопросом))
Вопрос наверное простой (не пугайтесь пожалуйста поэме ниже, все проще чем кажется), и на форуме и вообще в сети я как-то не нашел именно то, что мне нужно. Вернее та информация, которую я находил, для меня достаточно расплывчата (извините если не увидел на форуме). По порядку:
Моя задача такая:
хочу написать небольшой частный gui для будущей программки (ну хотя бы для тренировки как минимум), конкретно, один из элементов будет Resizer (элемент, потянув за который мышкой, я буду изменять размер окна, который в правом нижнем углу окна встречается). Для этого я создаю тип WResizer (сокр. от window resizer) с набором параметров, но одна из переменных, которые я хочу использовать в каждом экземпляре нового объекта - это двухмерный массив, который будет использован для прорисовке изображения. То есть мне нужно обязательно, чтобы все изображения рисовались программно, без внешних файлов изображений, по двум причинам: 1.не хочу иметь кучу внешних файлов; 2.планирую сделать выбор цветовой схемы, и зависимо от того, какая схема будет выбрана пользователем, в таких цветах будет рисоваться изображение.
Вот сам тип:
И соответственно сам массив в описании Sub'а (разбил построчно в порядке RGBA с эдакими полями 16х16 для наглядности, так легче заполнять значения каждого пикселя):
Это кусок кода из стороннего .bi-файла. При попытке запуска вылетает ошибка со ссылкой на массив:
В сети есть предложения для динамических массивов: объявить в типе переменную, которой позже уже в экземплере объекта будет назначено значение, например 5, если в массиве будет 5 штук, а также создать указатель (но мне нужен PTR как классический буфер для изображения). А далее по предложению и сам массив будет создаваться также уже в экземпляре объекта, но опять же не в типе! А мне нужно чтобы этот массив был лишь однажды забит в типе, мне как раз-таки не нужно создавать массив в финале в экземпляре, иначе просто нет смысла вообще делать это как тип, если я буду каждый раз набивать всю двухмерную эпопею, что вы видели выше.
Если кто сталкивался или может чем помочь, наставьте меня, пожалуйста, если я что-то делаю не так. А если есть предложения, как другим методом обойти этот массив, чтобы вписать эти значения раз и навсегда один раз, а потом просто на них ссылаться в типе, я с удовольствием приму.
Прошу прощения, если использую не совсем ту терминологию по поводу типа, класса или объекта. И еще раз пардон за эпопею, но все-таки, какая проблема, столько и слов
Вопрос наверное простой (не пугайтесь пожалуйста поэме ниже, все проще чем кажется), и на форуме и вообще в сети я как-то не нашел именно то, что мне нужно. Вернее та информация, которую я находил, для меня достаточно расплывчата (извините если не увидел на форуме). По порядку:
Моя задача такая:
хочу написать небольшой частный gui для будущей программки (ну хотя бы для тренировки как минимум), конкретно, один из элементов будет Resizer (элемент, потянув за который мышкой, я буду изменять размер окна, который в правом нижнем углу окна встречается). Для этого я создаю тип WResizer (сокр. от window resizer) с набором параметров, но одна из переменных, которые я хочу использовать в каждом экземпляре нового объекта - это двухмерный массив, который будет использован для прорисовке изображения. То есть мне нужно обязательно, чтобы все изображения рисовались программно, без внешних файлов изображений, по двум причинам: 1.не хочу иметь кучу внешних файлов; 2.планирую сделать выбор цветовой схемы, и зависимо от того, какая схема будет выбрана пользователем, в таких цветах будет рисоваться изображение.
Вот сам тип:
- Код:
's - от "Scheme" (цветовая схема), r,g,b,a - три цвета и альфа-канал
Dim As UByte sr = 191, sg = 191, sb = 191
'WINDOW RESIZER >>
Type WResizer
As UByte count 'счетчик для заполнения буфера изображения пиксель за пикселем
As UByte sa 'Scheme Alpha-канал вышеупомянутый, но этот параметр будет меняться в экземпляре объекта
image As Any Ptr = ImageCreate(16, 16, RGB(0,0,0)) 'буфер для изображения 16х16
As UByte content(3,255) 'Сам злополучный массив. 4 канала (R,G,B,A), и в каждом по 256 пикселей для будущего изображения.
Declare Sub updatepic() 'для рисования или обновления изображения
Declare Destructor()
End Type
И соответственно сам массив в описании Sub'а (разбил построчно в порядке RGBA с эдакими полями 16х16 для наглядности, так легче заполнять значения каждого пикселя):
- Код:
Sub WResizer.updatepic()
'начинаю заполнять сам массив
this.content(3,255)=_
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sr+51, sr, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sr, sr-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sr+51, sr, 0, 0, sr+51, sr, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sr, sr-51, 0, 0, sr, sr-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, sr+51, sr, 0, 0, sr+51, sr, 0, 0, sr+51, sr, 0, 0, 0,_
0, 0, 0, sr, sr-51, 0, 0, sr, sr-51, 0, 0, sr, sr-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},_
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sg+51, sg, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sg, sg-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sg+51, sg, 0, 0, sg+51, sg, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sg, sg-51, 0, 0, sg, sg-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, sg+51, sg, 0, 0, sg+51, sg, 0, 0, sg+51, sg, 0, 0, 0,_
0, 0, 0, sg, sg-51, 0, 0, sg, sg-51, 0, 0, sg, sg-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},_
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sb+51, sb, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sb, sb-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sb+51, sb, 0, 0, sb+51, sb, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sb, sb-51, 0, 0, sb, sb-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, sb+51, sb, 0, 0, sb+51, sb, 0, 0, sb+51, sb, 0, 0, 0,_
0, 0, 0, sb, sb-51, 0, 0, sb, sb-51, 0, 0, sb, sb-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},_
{ 0, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, 0,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, 255, 255, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, 255, 255, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, 255, 255, this.sa, this.sa, 255, 255, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, 255, 255, this.sa, this.sa, 255, 255, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, 255, 255, this.sa, this.sa, 255, 255, this.sa, this.sa, 255, 255, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, 255, 255, this.sa, this.sa, 255, 255, this.sa, this.sa, 255, 255, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa,_
0, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, this.sa, 0}}
'заполняем буфер изображения, используя данные массива
For iy As UByte = 0 To 15
For ix As UByte = 0 To 15
PSet this.image,(ix,iy),RGBA(this.content(0,this.count),this.content(1,this.count),_
this.content(2,this.count),this.content(3,this.count))
this.count += 1
Next
Next
this.count = 0
End Sub
Destructor WResizer()
ImageDestroy this.image
End Destructor
'<< WINDOW RESIZER
Это кусок кода из стороннего .bi-файла. При попытке запуска вылетает ошибка со ссылкой на массив:
Конечно, компилятор наверное ожидает какое-то выражение, но мне ему предложить нечего (от n-мерности массива это не зависит, проверил). Делаю вывод, что массив таким образом впихнуть раз и навсегда в тип нельзя.error 9: Expected expression, found '{' in '{{ 0, 0, и т.д.'
В сети есть предложения для динамических массивов: объявить в типе переменную, которой позже уже в экземплере объекта будет назначено значение, например 5, если в массиве будет 5 штук, а также создать указатель (но мне нужен PTR как классический буфер для изображения). А далее по предложению и сам массив будет создаваться также уже в экземпляре объекта, но опять же не в типе! А мне нужно чтобы этот массив был лишь однажды забит в типе, мне как раз-таки не нужно создавать массив в финале в экземпляре, иначе просто нет смысла вообще делать это как тип, если я буду каждый раз набивать всю двухмерную эпопею, что вы видели выше.
Если кто сталкивался или может чем помочь, наставьте меня, пожалуйста, если я что-то делаю не так. А если есть предложения, как другим методом обойти этот массив, чтобы вписать эти значения раз и навсегда один раз, а потом просто на них ссылаться в типе, я с удовольствием приму.
Прошу прощения, если использую не совсем ту терминологию по поводу типа, класса или объекта. И еще раз пардон за эпопею, но все-таки, какая проблема, столько и слов
Re: Массивы внутри типа
Может я не совсем правильно понял. Однако попробую пояснить, как я это вижу.
Массив инициализируется значениями либо сразу при создании, либо после отдельно поячейно. В вашем случае насколько я понял основная масса заполненных ячеек статична, остальные меняются при создании объекта?! Я бы в данном случае сделал бы так как в примере ниже:
Поскольку при инициализации массива имеются переменные величины (sg,sa) , то их необходимо делать глобальными (то есть создаваемыми компилятором в секции данных, но не в стеке) . Иначе компилятор выдает ошибку, оно и понятно. Как он может взять значение для заполнения ячейки структуры, если переменной, откуда надо брать, еще не существует? Как то так наверно . Кстати вместо процедуры updatepic() я бы сделал лучше конструктор , хотя конечно не знаю всех ваших задумок...
Массив инициализируется значениями либо сразу при создании, либо после отдельно поячейно. В вашем случае насколько я понял основная масса заполненных ячеек статична, остальные меняются при создании объекта?! Я бы в данном случае сделал бы так как в примере ниже:
- Код:
's - от "Scheme" (цветовая схема), r,g,b,a - три цвета и альфа-канал
Dim Shared As UByte sr = 191, sg = 191, sb = 191,sa =0
'WINDOW RESIZER >>
Type WResizer
As UByte count 'счетчик для заполнения буфера изображения пиксель за пикселем
image As Any Ptr = ImageCreate(16, 16, RGB(0,0,0)) 'буфер для изображения 16х16
As UByte content(3,255)= {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sr+51, sr, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sr, sr-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sr+51, sr, 0, 0, sr+51, sr, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sr, sr-51, 0, 0, sr, sr-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, sr+51, sr, 0, 0, sr+51, sr, 0, 0, sr+51, sr, 0, 0, 0,_
0, 0, 0, sr, sr-51, 0, 0, sr, sr-51, 0, 0, sr, sr-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},_
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sg+51, sg, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sg, sg-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sg+51, sg, 0, 0, sg+51, sg, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sg, sg-51, 0, 0, sg, sg-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, sg+51, sg, 0, 0, sg+51, sg, 0, 0, sg+51, sg, 0, 0, 0,_
0, 0, 0, sg, sg-51, 0, 0, sg, sg-51, 0, 0, sg, sg-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},_
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sb+51, sb, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sb, sb-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sb+51, sb, 0, 0, sb+51, sb, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, sb, sb-51, 0, 0, sb, sb-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, sb+51, sb, 0, 0, sb+51, sb, 0, 0, sb+51, sb, 0, 0, 0,_
0, 0, 0, sb, sb-51, 0, 0, sb, sb-51, 0, 0, sb, sb-51, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},_
{ 0, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, 0,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, 255, 255, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, 255, 255, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, 255, 255, sa, sa, 255, 255, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, 255, 255, sa, sa, 255, 255, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, 255, 255, sa, sa, 255, 255, sa, sa, 255, 255, sa, sa, sa,_
sa, sa, sa, 255, 255, sa, sa, 255, 255, sa, sa, 255, 255, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa,_
0, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, sa, 0}}
Declare Sub updatepic() 'для рисования или обновления изображения
Declare Destructor()
End Type
Sub WResizer.updatepic()
'заполняем буфер изображения, используя данные массива
For iy As UByte = 0 To 15
For ix As UByte = 0 To 15
PSet this.image,(ix,iy),RGBA(this.content(0,this.count),this.content(1,this.count),_
this.content(2,this.count),this.content(3,this.count))
this.count += 1
Next
Next
this.count = 0
End Sub
Destructor WResizer()
ImageDestroy this.image
End Destructor
'<< WINDOW RESIZER
Поскольку при инициализации массива имеются переменные величины (sg,sa) , то их необходимо делать глобальными (то есть создаваемыми компилятором в секции данных, но не в стеке) . Иначе компилятор выдает ошибку, оно и понятно. Как он может взять значение для заполнения ячейки структуры, если переменной, откуда надо брать, еще не существует? Как то так наверно . Кстати вместо процедуры updatepic() я бы сделал лучше конструктор , хотя конечно не знаю всех ваших задумок...
trew- Сообщения : 331
Дата регистрации : 2010-10-14
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|