Тип поля в очереди
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Тип поля в очереди
Не помню. Можно ли определить тип поля в очереди, LONG, STRING и т.д. ?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Тип поля в очереди
Да это то понятно. Хотелось бы что то типа PROP:Create для поля очереди
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
Тип поля в очереди
Если не ошибаюсь, такого нет... Я делал проверку на строковые/числовые, затем для числовых определял по размеру byte/short/long/real.
C6/C11, ШВС, tps/btrieve.
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Тип поля в очереди
Я примерно так и подумал. Проверять на граничные значения.
Пока не нужно, так... в голове мысли крутятся.
Пока не нужно, так... в голове мысли крутятся.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Тип поля в очереди
Можно определить такую перегруженную функцию и передавать в неё поле очереди:
Код: Выделить всё
GetType(*BYTE),LONG
GetType(*SHORT),LONG
GetType(*USHORT),LONG
GetType(*DATE),LONG
GetType(*TIME),LONG
GetType(*LONG),LONG
GetType(*ULONG),LONG
GetType(*SREAL),LONG
GetType(*REAL),LONG
GetType(*BFLOAT4),LONG
GetType(*BFLOAT8),LONG
GetType(*?),LONG
С уважением, ДП
Тип поля в очереди
Что-то вот написал, если заблуждаюсь - поправьте.
Код: Выделить всё
Program
Map
Module('ClaRUN')
VarType(*?), short, name('Cla$VariantType')
end
end
vartype queue, pre(vt)
n short
t string(7).
a1 byte
a2 short
a3 ushort
a4 long
a5 ulong
a6 sreal
a7 real
a8 string(8)
a9 cstring(9)
a10 date
a11 time
! можно продолжить
any_g group
b1 long
b2 string(10)
b3 byte.
code
vt:t = 'byte' ; vt:n = 8612 ; add(vartype)
vt:t = 'short' ; vt:n = 8452 ; add(vartype)
vt:t = 'ushort' ; vt:n = 8292 ; add(vartype)
vt:t = 'long' ; vt:n = 6372 ; add(vartype)
vt:t = 'ulong' ; vt:n = 7652 ; add(vartype)
vt:t = 'sreal' ; vt:n = 7492 ; add(vartype)
vt:t = 'real' ; vt:n = 5572 ; add(vartype)
vt:t = 'string' ; vt:n = 4484 ; add(vartype)
vt:t = 'cstring' ; vt:n = 6692 ; add(vartype)
vt:t = 'date' ; vt:n = 7972 ; add(vartype)
vt:t = 'time' ; vt:n = 8132 ; add(vartype)
vt:n = VarType(a1) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a2) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a3) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a4) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a5) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a6) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a7) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a8) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a9) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a10) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(a11) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(any_g.b1) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(any_g.b2) ; get(vartype, vt:n) ; message(vt:t)
vt:n = VarType(any_g.b3) ; get(vartype, vt:n) ; message(vt:t)
C10, Win10x64
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Тип поля в очереди
Попробуйте exe-шник:
- Вложения
-
- Test_FORUM.zip
- (2.72 КБ) 129 скачиваний
C10, Win10x64
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Тип поля в очереди
Вот так тип поля определяется на раз.
Код: Выделить всё
PROGRAM
MAP
TypeOf(*STRING),LONG
TypeOf(*CSTRING),LONG
TypeOf(*BYTE),LONG
TypeOf(*SHORT),LONG
TypeOf(*USHORT),LONG
TypeOf(*DATE),LONG
TypeOf(*TIME),LONG
TypeOf(*LONG),LONG
TypeOf(*ULONG),LONG
TypeOf(*SREAL),LONG
TypeOf(*REAL),LONG
TypeOf(*?),LONG
INCLUDE('printf.inc')
END
Q QUEUE
F1 STRING(20)
F2 LONG
F3 ULONG
F4 DATE
END
CODE
Q.F1 = 'Text'
Q.F2 = -100000
Q.F3 = +100000
Q.F4 = TODAY()
ADD(Q)
GET(Q, 1)
MESSAGE(printf('Type of %s is %i', Q.F1, TypeOf(Q.F1)))
MESSAGE(printf('Type of %s is %i', Q.F2, TypeOf(Q.F2)))
MESSAGE(printf('Type of %s is %i', Q.F3, TypeOf(Q.F3)))
MESSAGE(printf('Type of %s is %i', Q.F4, TypeOf(Q.F4)))
TypeOf PROCEDURE(*STRING pVar)
CODE
RETURN DataType:STRING
TypeOf PROCEDURE(*CSTRING pVar)
CODE
RETURN DataType:CSTRING
TypeOf PROCEDURE(*BYTE pVar)
CODE
RETURN DataType:BYTE
TypeOf PROCEDURE(*SHORT pVar)
CODE
RETURN DataType:SHORT
TypeOf PROCEDURE(*USHORT pVar)
CODE
RETURN DataType:USHORT
TypeOf PROCEDURE(*DATE pVar)
CODE
RETURN DataType:DATE
TypeOf PROCEDURE(*TIME pVar)
CODE
RETURN DataType:TIME
TypeOf PROCEDURE(*LONG pVar)
CODE
RETURN DataType:LONG
TypeOf PROCEDURE(*ULONG pVar)
CODE
RETURN DataType:ULONG
TypeOf PROCEDURE(*SREAL pVar)
CODE
RETURN DataType:SREAL
TypeOf PROCEDURE(*REAL pVar)
CODE
RETURN DataType:REAL
TypeOf PROCEDURE(*? pVar)
CODE
RETURN 0
С уважением, ДП
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Тип поля в очереди
Перефразирую: зачем мне пробовать Ваш exe-шник? Есть исходный код, я его собрал, у меня теперь свой exe-шник, чем он хуже?
Логика подсказывает, что функция Cla$VariantType возвращает внутренний тип переменной VARIANT, проверка это подтверждает:
Код: Выделить всё
Program
Map
Module('ClaRUN')
!-- VarType(*?), short, name('Cla$VariantType')
VariantType(*VARIANT v), short, name('Cla$VariantType')
end
end
v1 VARIANT
v2 VARIANT
code
v1 = 500
MESSAGE('TypeOf(v1) is '& VariantType(v1)) !-- 3 или VT_I4
v2 = 'Test'
MESSAGE('TypeOf(v2) is '& VariantType(v2)) !-- 8 или VT_BSTR
С уважением, ДП
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Тип поля в очереди
Если поле прогнал через ANY то "все пропало". Печально
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса