|
вопрос по VK на базе v8napi | ☑ | ||
---|---|---|---|---|
0
vde69
11.10.12
✎
15:59
|
наступил на грабли с ВК,
собственно есть необходимость передавать из/в ВК числа LongWord (без знаковые 4 байтные) сейчас использую для получения i := V8AsInt(@Params[1]); и для передачи V8SetInt(RetValue, i) нужно заменить эти функции, но вот не соображу на что.... зы проблемма когда пытаюсь работать с большими числами (в 1с получаю отрицательное число) |
|||
1
awa15
11.10.12
✎
17:42
|
В качестве костылей могу посоветовать просто преобразовывать в 1С числа, типа такого
i = ?(i < 0, i + 4294967296, i); и обратно i = ?(i > 2147483647, i - 4294967296, i); |
|||
2
vde69
11.10.12
✎
17:52
|
(1) я это сделал и сам, только все равно сабж нужно решать
|
|||
3
vde69
11.10.12
✎
17:57
|
(1) ты лучше скажи чего значить 3 первых байта в схеме (EF BB BF)
|
|||
4
qeos
11.10.12
✎
17:59
|
так вродеж в 1с не инты используются..
|
|||
5
vde69
11.10.12
✎
17:59
|
(3)+ вероятно это дискриптр что дальше идет "поток" ?
|
|||
6
acsent
11.10.12
✎
17:59
|
(3) UTF BOM
|
|||
7
vde69
11.10.12
✎
18:02
|
(6) спасибо
|
|||
8
H A D G E H O G s
12.10.12
✎
02:10
|
Вижу в v8napi.pas следующее.
procedure TV8UserObject.V8SetCard(V: PV8Variant; Value: Cardinal); begin V8ClearVar(V); V.vt := VTYPE_UINT; V.VarEnum.ulVal := Value; end; Толи я запиливал, толи 1С, толи это не работает, хз, дома не стоит Дельфя, завтра притащу тока. Ну и по аналогии я бы попробовал запилить типа: function V8AsCard(V: PV8Variant): Cardinal; begin if (V.vt and VTYPE_TYPEMASK) = VTYPE_UINT then result := V.VarEnum.uintVal; else result := AsCardinal(V); end; И аналогично AsCardinal() Но ВРОДЕ БЫ у native api были проблемы с передачью Cardinal, и они обесчали пофиксить, х.з. |
|||
9
vde69
12.10.12
✎
09:04
|
(8) Cardinal - тип который не гарантировано 4 байта имеет, мне нужен именно LongWord
но дело даже не в этом, пробовал я запилить по подобию - но чего то не выходит, уж не знаю даже почему.... пока буду юзать заплатку в 1с но на будующее все равно нужно допилить |
|||
10
H A D G E H O G s
12.10.12
✎
10:22
|
(9)
Cardinal - тип который не гарантировано 4 байта имеет Фига себе. Как это негарантированно О_О |
|||
11
vde69
12.10.12
✎
11:23
|
(10) http://www.delphibasics.ru/Cardinal.php
Тип Cardinal это Integer, размер которого не гарантируется. Это основное целое число без знака, и в настоящее время имеет такую же вместимость как LongWord : 32 бита. гарантированую длину имеют типы byte, word, LongWord остальные - нет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |