FreeBasic
Главная
Вход
Регистрация
Воскресенье, 22.12.2024, 04:36Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Как использовать SHARED
SKДата: Среда, 13.06.2012, 08:42 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
Привет. У меня такой затык. Я хочу сразу инициализировать строковую переменную, но выдается ошибка. Я пишу так

Dim shared as string STROKA= "....."

Что не так?
 
haavДата: Среда, 13.06.2012, 11:27 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Quote (SK)
Привет. У меня такой затык. Я хочу сразу инициализировать строковую переменную, но выдается ошибка. Я пишу так Dim shared as string STROKA= "....." Что не так?


Я точно не уверен, но вроде это можно сделать только

1) Так (конечно размер буфера строки может быть любым):

Code

Dim shared as string*10 STROKA= "....."


2) Или так:

Code
Dim shared as string STROKA
STROKA= "....."


Добавлено позже

Я задал подобный вопрос на оф.форуме. И там TJF показал еще один из методов:

Code
DIM SHARED AS ZSTRING PTR s(...) = {@"one", @"two", @"three"} 'right!

?*s(0)
sleep


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
SKДата: Среда, 13.06.2012, 22:08 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
Спасибо haav, первый вариант в принципе подойдет.
 
RoloverДата: Среда, 31.07.2013, 21:29 | Сообщение # 4
Лейтенант
Группа: Пользователи
Сообщений: 45
Репутация: 0
Статус: Offline
А как много переменных можно Объявлять глобальными (Расшаривать  shy ) ?

На что это может повлиять?


Объяснив другому, поймешь, что понял сам.
 
haavДата: Четверг, 01.08.2013, 08:11 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата (Rolover)
А как много переменных можно Объявлять глобальными (Расшаривать shy ) ?


Сколько душа желает, конечно в рамках размера оперативной памяти компьютера.

Цитата (Rolover)
На что это может повлиять?


На стиль вашего кодирования. Вообще надо четко для себя понимать\осознавать, где необходима переменная
  • глобальная (dim shared as integer)
  • статичная (static as integer)
  • локальная, память которой берется из стека (dim as integer)
  • суперглобальные (Extern As Integer)


Я поясню как понимаю сам.

Локальная переменная нужна там, где при ее(их) использовании выделяется мало памяти. Очень хорошо ее использовать например в циклах For-Next для счетчиков либо для быстрых расчетов в какой-то области видимости. Но размещать их много в общем блоке кода я бы не рекомендовал.

Статичная переменная может использоваться для переменных с большим объемом памяти. Ее хорошо размещать как в общем блоке коде, так и в процедуре(когда требуется сохранить значение даже после выхода из процедуры)

Глобальная переменная так же может использоваться для переменных с большим объемом памяти. Ее используют для глобальной видимости во всех местах кода в одном модуле.

Суперглобальная переменная так же может использоваться для переменных с большим объемом памяти. Ее используют для видимости переменных во многомодульных проектах. Иногда ее хорошо использовать для инициализации объемных массивов, когда хочется тех записать в конец кода модуля.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ПавелДата: Среда, 07.08.2013, 16:40 | Сообщение # 6
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline
Цитата (haav)
Локальная переменная нужна там, где при ее(их) использовании выделяется мало памяти. Очень хорошо ее использовать например в циклах For-Next для счетчиков либо для быстрых расчетов в какой-то области видимости. Но размещать их много в общем блоке кода я бы не рекомендовал.


а в чем проблема , всегда использовал их и вроде номарльно shock
 
haavДата: Среда, 07.08.2013, 20:51 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата (Павел)
а в чем проблема , всегда использовал их и вроде номарльно

Размер стека ограниченный. Если взять массив большой, либо общее большое кол-во памяти выделенное под переменные и\или какие нибудь рекурсивные функции и пр. , так жди вылета. Ну а так для небольшого числа переменных конечно пойдет. Ну или стек при компиляции увеличивать. Вообще конечно от программы зависит.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 1 из 1
  • 1
Поиск: