Как использовать SHARED
|
|
SK | Дата: Среда, 13.06.2012, 08:42 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 9
Статус: Offline
| Привет. У меня такой затык. Я хочу сразу инициализировать строковую переменную, но выдается ошибка. Я пишу так
Dim shared as string STROKA= "....."
Что не так?
|
|
| |
haav | Дата: Среда, 13.06.2012, 11:27 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: 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
Статус: Offline
| Спасибо haav, первый вариант в принципе подойдет.
|
|
| |
Rolover | Дата: Среда, 31.07.2013, 21:29 | Сообщение # 4 |
Лейтенант
Группа: Пользователи
Сообщений: 45
Статус: Offline
| А как много переменных можно Объявлять глобальными (Расшаривать ) ?
На что это может повлиять?
Объяснив другому, поймешь, что понял сам.
|
|
| |
haav | Дата: Четверг, 01.08.2013, 08:11 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: 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
Статус: Offline
| Цитата (haav) Локальная переменная нужна там, где при ее(их) использовании выделяется мало памяти. Очень хорошо ее использовать например в циклах For-Next для счетчиков либо для быстрых расчетов в какой-то области видимости. Но размещать их много в общем блоке кода я бы не рекомендовал.
а в чем проблема , всегда использовал их и вроде номарльно
|
|
| |
haav | Дата: Среда, 07.08.2013, 20:51 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата (Павел) а в чем проблема , всегда использовал их и вроде номарльно Размер стека ограниченный. Если взять массив большой, либо общее большое кол-во памяти выделенное под переменные и\или какие нибудь рекурсивные функции и пр. , так жди вылета. Ну а так для небольшого числа переменных конечно пойдет. Ну или стек при компиляции увеличивать. Вообще конечно от программы зависит.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |