Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
1

LSet и RSet

17.10.2013, 13:17. Показов 4380. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не вопрос как работает. Не понятно когда использовать.
Кто-то может привести реальный аргументированный пример, когда это хорошо?
1
Лучшие ответы (1)
Модератор
Эксперт MS Access
11963 / 4831 / 779
Регистрация: 07.08.2010
Сообщений: 14,151
Записей в блоге: 4
17.10.2013, 14:38 2
Лучший ответ Сообщение было отмечено Jack Famous как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub rset00()
'надо получить текстовик типа
'
'номер;фамилия            ;оклад
'
'можно конечно считать пробелы, а можно
 
Dim znom As String * 5
Dim zfio As String * 30
Dim zoklad As String * 10
Dim xm1, xm2, x1, x2
xm1 = Array("иванов", "петров", "петров-водкин", "михайловский")
xm2 = Array(1000, 200000, 20000000, 500)
x1 = LBound(xm1, 1)
x2 = UBound(xm1, 1)
Do While x1 <= x2
RSet znom = x1 + 1
LSet zfio = xm1(x1)
RSet zoklad = xm2(x1)
x1 = x1 + 1
Debug.Print znom; " "; zfio; zoklad
Loop
 
End Sub
1иванов1000
2петров200000
3петров-водкин20000000
4михайловский500


не смогла выровнять, а в текстовике все ок"
Миниатюры
LSet и RSet  
3
Модератор
Эксперт MS Access
11963 / 4831 / 779
Регистрация: 07.08.2010
Сообщений: 14,151
Записей в блоге: 4
17.10.2013, 14:44 3
можно выровнять и по центру
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
17.10.2013, 14:48  [ТС] 4
Спасибо!

Меня долбил пример:
Visual Basic
1
2
3
4
5
Sub qwe()
 a$ = "1-1"
 LSet a$ = "1234567890"
 Stop
End Sub
0
Модератор
Эксперт MS Access
11963 / 4831 / 779
Регистрация: 07.08.2010
Сообщений: 14,151
Записей в блоге: 4
17.10.2013, 15:18 5
тогда уж
Visual Basic
1
2
3
4
5
6
7
8
9
Sub qwe2()
Dim a As String * 10
 a = "1-1"
 RSet a = "1-0"
Debug.Print a; "="
LSet a = "1-0"
Debug.Print a; "="
 'Stop
End Sub
 Комментарий модератора 
Используйте теги соответствующего языка.
Наш случай - VB.
Предупреждение последнее
1
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
17.10.2013, 15:44  [ТС] 6
не с фиксированной длиной интереснее )

в целом понятно. но странно т.к. (IMHO) столь узкое целевое использование оператора как-то не сильно оправдывает его существование среди и без того бедного базового функционала ...
0
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
17.10.2013, 16:38 7
StepInLik, чтобы вы не расстраивались, приведу вам свой пример, как я однажды использовал эту функцию .

Возможно, он покажется вам более интересным.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Type MyDWordL 'Двойное слово в виде Long значения.
    value As Long 'Значение двойного слова.
End Type
Type MyDWord 'Двойное слово в виде верхней и нижней части.
    lParam(1) As Byte 'Нижняя часть слова.
    wParam(1) As Byte 'Верхняя часть слова.
End Type
'При передаче двойного слова в API функцию иногда бывает необходимо разбить его на две части.
Sub DivideDWordToWords()
    Dim n As MyDWordL, dw As MyDWord
    n.value = 65536 * 7 + 1234 'Задано двойное слово в виде Long значения.
    LSet dw = n 'Разбили слово на верхнюю и нижнюю части.
    Debug.Print dw.wParam(1) * 256 + dw.wParam(0) 'Полученная верхняя часть.
    Debug.Print dw.lParam(1) * 256 + dw.lParam(0) 'Полученная нижняя часть.
End Sub

С уважением,
Aksima
2
17.10.2013, 16:38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru