Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Утилитки / 25 сообщений из 27, страница 1 из 2
13.08.2004, 19:23:28
    #32649411
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Как народ смотрит на то, чтобы публиковать прямо здесь маленькие процедурки-утилитки, расширяющие стандартную "функциональность" VBA?

С разъяснением - обсуждением способа их использования, есссно ...
...
Рейтинг: 0 / 0
13.08.2004, 19:24:49
    #32649413
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
А что такое "функциональность" ?
...
Рейтинг: 0 / 0
13.08.2004, 20:11:30
    #32649456
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
для этого есть rusimport
формат форума для этого не удобен

P.S. Иван - опять Ura! (Geo:)
автор
расширяющие стандартную "функциональность" VBA
...
Рейтинг: 0 / 0
14.08.2004, 17:54:02
    #32649771
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Shuhard , если формат неудобен, значит это неправильный формат:)
Иван FXS , кидай сюда утилитки или хотя бы опиши их функциональность, обсудим.
...
Рейтинг: 0 / 0
14.08.2004, 21:33:14
    #32649859
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Pavel Иван FXS , кидай сюда утилитки ...
- дык вот ... даже и не знаю теперь ... одну вот кинул - в ветке http://www.sql.ru/forum/actualthread.aspx?tid=114321 - как то не очень ... того ... конструктивно вышло :-(
...
Рейтинг: 0 / 0
15.08.2004, 15:11:45
    #32650019
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
2 Иван FXS
Это не утилитки:) Если я каждую свою процедуру буду утилиткой для вба называть - то э\то просто монст какой-то будет:)

Утилитка, пригодившаяся мне в Аксесе Хп после перехода с 97-го - это TSI Expression - вызоа построителя выражений из редактора ВБА.
...
Рейтинг: 0 / 0
15.08.2004, 15:33:45
    #32650025
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Hummer это TSI Expression - вызоа построителя выражений из редактора ВБА.
- хммм ... в чем, по-вашему, разница между
1. утилитой
2. надстройкой
и
3. визардом
?
...
Рейтинг: 0 / 0
15.08.2004, 15:59:34
    #32650034
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
То что вы дали по ссылке не является ни одним из вышеперечисленного.
...
Рейтинг: 0 / 0
16.08.2004, 13:39:58
    #32650874
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
...
Рейтинг: 0 / 0
18.08.2004, 11:42:33
    #32654301
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Для меня утилитки - это, например, функции Split(), Replace() или InStrRev() ... компрехенд?
...
Рейтинг: 0 / 0
18.08.2004, 12:43:09
    #32654502
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function Array_is_Empty(arr) As Boolean
On Error GoTo EEEEE
Dim xUBound  As Long
    xUBound = UBound(arr)
Array_is_Empty = False
Exit Function

EEEEE: Array_is_Empty = True
End_SFP: End Function
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Array_is_Empty___TEST()
Dim a1(), a2(), a3( 1 ), a4, a5
ReDim a2( 11 ), a5( 11 )

Debug.Print Array_is_Empty(a1()), Array_is_Empty(a2()), Array_is_Empty(a3())  'нельзя: Array_is_Empty(a4()), Array_is_Empty(a5()) 
Debug.Print Array_is_Empty(a1), Array_is_Empty(a2), Array_is_Empty(a3), Array_is_Empty(a4), Array_is_Empty(a5)
Debug.Print "при том, что IsEmpty() - не срабатывает (точнее - срабатывает только для Variant и только 'без скобок'):"
Debug.Print IsEmpty(a1()), IsEmpty(a2()), IsEmpty(a3())  'нельзя: IsEmpty(a4()), IsEmpty(a5()) 
Debug.Print IsEmpty(a1), IsEmpty(a2), IsEmpty(a3), IsEmpty(a4), IsEmpty(a5)
End Sub
...
Рейтинг: 0 / 0
18.08.2004, 13:16:47
    #32654614
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Иван, не мог бы ты объяснить - в каком отношении "функциональность" твоей улитки (мне так "утилитки" сподручней называть) шире библиотечной функции IsArray ?
(почему IsArray лучше, я, пожалуй, возьмусь разобъяснить...)
...
Рейтинг: 0 / 0
18.08.2004, 13:18:25
    #32654620
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
2 Victosha
Ваня у нас системный программист - функциональность каксеса переписывает.
...
Рейтинг: 0 / 0
18.08.2004, 13:20:04
    #32654626
kedzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Alexus12Это - утилитка?
http://www.sql.ru/forum/actualthread.aspx#134935?tid=23899

такого топика, кстати, нет
...
Рейтинг: 0 / 0
18.08.2004, 13:37:42
    #32654697
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
VictoshaИван, не мог бы ты объяснить - в каком отношении "функциональность" твоей улитки (мне так "утилитки" сподручней называть) шире библиотечной функции IsArray ?
(почему IsArray лучше, я, пожалуй, возьмусь разобъяснить...)
Мне кажется, вы не совсем правы.
Необходимость проверки массива на "пустоту" может возникнуть.
И IsArray здесь не поможет, он скажет True, а Ubound даст ошибку

Public artest() As String
?isarray(artest)
True
?ubound(artest)
Subscript out of range

?Array_is_Empty(artest)
True
...
Рейтинг: 0 / 0
18.08.2004, 13:42:25
    #32654715
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
VictoshaИван, не мог бы ты объяснить - в каком отношении "функциональность" твоей улитки ... шире библиотечной функции IsArray ?- у-упс! Она не шире, она просто ДРУГАЯ ... добавьте
Код: plaintext
1.
2.
Debug.Print IsArray(a1()), IsArray(a2()), IsArray(a3())  ', IsArray(a4()), IsArray(a5()) 
Debug.Print IsArray(a1), IsArray(a2), IsArray(a3), IsArray(a4), IsArray(a5)
и сравните :-(

А "улитки" ... пусть будут ... мне тоже это ндравится! ;-)
...
Рейтинг: 0 / 0
18.08.2004, 14:35:31
    #32654875
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Вот этот топик:
http://www.sql.ru/forum/actualthread.aspx?tid=23899
Как транспонировать таблицу, или автонормализация
Удобно, когда приносят данные из Excel
(типа по горизонтали показатели, по вертикали даты)
...
Рейтинг: 0 / 0
18.08.2004, 14:52:02
    #32654947
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
2 Иван FXS & Serge Gavrilov

я понял, наконец, что вы имеете ввиду.
Годится. хороша улитка. Мно меня же всё-таки запутала

На этом основании посмелю заявить - дважды плохо определена.

1) на вход можно подать вполне инициализированный вариант (не массив) и она скажет False, потому что решит, что это не массив, а я-то думал, что она его на "пустоту" проверит.

2) я могу понимать "пустой" массив как вполне себе инициализированный (Redim), но еще не получивший значений, отличных от значений по умолчанию.

"пустой" - плохо определено. Ubound определен лучше.
Как UboundEx улитка выглядит лучше. Хотя, используя API, она переписывается без непосредственного дерганья за ошибку.

ЗЫ
это я так, языком помолол. а упомянутое либо сыщу со ссылками на первоисточник, либо перепишу ввечеру - если есть интерес.


(с выражением лица)
...
Рейтинг: 0 / 0
18.08.2004, 15:11:35
    #32655033
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Victosha... "пустой" - плохо определено. Ubound определен лучше.
Как UboundEx улитка выглядит лучше ...
- не могу согласиться: "пустой массив" и "массив с пустыми элементами" - это ведь совсем разные смыслы ...

А формулировка "массив инициализированный (Redim), но еще не получивший значений, отличных от значений по умолчанию" - это совсем уже ... аут! (Почему, кстати, Redim? С Dim (и Public) - все точно также!)

Улитки - они ведь должны функционализировать "примитивы мышления" ... по-русски: позволять просто отображать в коде то, что легко помыслить и часто приходится использовать!

Тогда - и программировать легче, и программа получается более читабельной ...
...
Рейтинг: 0 / 0
18.08.2004, 17:21:31
    #32655417
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
2 Иван FXS
1) мне привычней массив, который Вы называете "пустым" называть неинициализированным.

2) массивы и обрашения к ним чаще всего в рамках какихто циклов встречаются. В этом смысле Ubound универсально охраняет как от обращения к неинициализированному массиву, так и определяет (верхние) границы циклов.
Ваша справедливость - часто неудобно перехватывать ошибку непосредственно от Ubound|LBound. И любая обертка - инкапсулирующая или не вызывающая ошибку - полезна.





(с выражением лица)
...
Рейтинг: 0 / 0
18.08.2004, 17:30:00
    #32655441
Хам трамвайный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
как Иван начинает в рассуждалки говорить
так у меня все опускается
может чево та я не понимай в ентой жисти?
вроде форум по аксессу, а он все пургу гонит про
использование каких та фунциклеров.
ну точна теоретик.
тебя уже отправляли а форум по проектированию
чаво ж ты опять смуту сеишь?
Иван, ты нас не понимаешь наверное? - Мы другие немного.
...
Рейтинг: 0 / 0
18.08.2004, 20:39:40
    #32655719
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
раз уж заявлен некий Емпти, то вот вариант Емпти с использованием апи (что плохо) и без дерганья за ошибку (что хорошо). Ubound щас недосуг вытворять, но он "парой строк" будет отличаться. Готового не сыскал в завалах.
Иван, сам допишешь UBoundEx?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)



Function IsVariantEmpty(varVar As Variant) As Boolean

 'проверяет полученную переменную на "пустоту" 
 'возвратит истину для неинициализированного массива, 
 'объектной переменной значение которой Is Nothing 
 'или неинициализированного варианта 

  If IsArray(varVar) Then
    Dim lngArrAddress As Long, saPtr As Long
     'получаем указатель на элемент данных 
    CopyMemory lngArrAddress, ByVal VarPtr(varVar) +  8 ,  4 
    
    'получаем адрес описателя массива 
    ' для неинициализированного массива он всегда будет 0 
   CopyMemory saPtr, ByVal lngArrAddress,  4 
   
   IsVariantEmpty = saPtr =  0 
  ElseIf IsObject(varVar) Then
    IsVariantEmpty = (varVar Is Nothing)
  Else
    IsVariantEmpty = IsEmpty(varVar)
  End If
End Function
...
Рейтинг: 0 / 0
18.08.2004, 22:15:47
    #32655751
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Victosha2 Иван FXS
1) мне привычней массив, который Вы называете "пустым" называть неинициализированным.


как назвать массив, у которого Lbound > Ubound
?Ubound(array())
-1
?Lbound(array())
0
...
Рейтинг: 0 / 0
18.08.2004, 22:55:00
    #32655765
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
Serge Gavrilov Victosha2 Иван FXS
1) мне привычней массив, который Вы называете "пустым" называть неинициализированным.


как назвать массив, у которого Lbound > Ubound
?Ubound(array())
-1
?Lbound(array())
0

Природу и происхождение вопроса я не понял. Но как-нибудь отвечу.

Скажу честно – я не знаю, как его назвать.
Возможно – «нечистым» - более умного я вряд ли придумаю. Ну, разве что – «массив с искаженным описателем».

Мне неизвестен способ объявления массива с такими описателями в рамках синтаксиса языка – Redim ar(False to True) - не прокатит, прокатит только Redim ar(True to False).

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

В отсутствии информации о происхождении массива с таким образом сформированным описателем, нет доверия элементам, которые будут возвращены этим массивом.
По части работоспособности такого описателя – не возьмусь ничего сказать. Что называется «не пробовал». Однако некие сомнения есть в том, что механизм проверки границ диапазонов «везде пропустит» фактическую работу с таким описателем массива.

Заканчивая сие послание, определенно могу сказать только то, что ни "пустым", ни "неинициализированным" массив с такм поведением определенно назвать нельзя.


(с выражением лица)
...
Рейтинг: 0 / 0
18.08.2004, 23:35:18
    #32655775
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утилитки
VictoshaПрироду и происхождение вопроса я не понял. Но как-нибудь отвечу.
Скажу честно – я не знаю, как его назвать.
Возможно – «нечистым» - более умного я вряд ли придумаю. Ну, разве что – «массив с искаженным описателем».

Мне неизвестен способ объявления массива с такими описателями в рамках синтаксиса языка – Redim ar(False to True) - не прокатит, прокатит только Redim ar(True to False).

Как понять неизвестен? Такой массив возвращает функция Array с пустым списком аргументов, как я написал.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Утилитки / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]