|
Во что надо преобразовывать C++ -ное PUInt64 ?
|
|||
---|---|---|---|
#18+
Ну т.е. в C-шной структуре имеем: PUInt64 m_totalBytes; unsigned m_totalPackets; Если в VB-шной структуре при этом наляпать (общение через API): m_totalBytes As Long m_totalPackets As Long то VB-приложения крашит. Если C-шную структуру переписать в виде unsigned m_totalBytes; unsigned m_totalPackets; то VB-приложение работает, но при этом C-шная библиотека при компиляции подругивается, мол можете потерять данные при конвертации PUInt64->unsigned, потому что там в оригинальном параметре PUInt64 А вдруг и вправду потеряю? Что надо писать в VB структуре (Type), чтоб в C оставить PUInt64? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2012, 18:06 |
|
Во что надо преобразовывать C++ -ное PUInt64 ?
|
|||
---|---|---|---|
#18+
Дмитрий77, Вот так и написано - PUInt64? Не PUINT64? В любом случае, вопрос неполон без приведения описания этого типа (а в библиотеке могли своё описание сделать). Хорошо, предположим, что Код: plaintext 1.
и размер указателя 32 бита. Теперь о краше. Судя по названию, m_totalBytes, библиотечная функция должна заполнять этот счётчик при вызове. Значит, она ожидает, что это поле вызывающей стороной заполняеЦЦа корректным значением (и, видимо, на NULL нет проверки), а именно адресом (VarPtr) счётчика. Счётчик в VB можно сделать As Currency (с учётом умножения на 10000), либо как UDT из двух Long-ов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2012, 18:36 |
|
Во что надо преобразовывать C++ -ное PUInt64 ?
|
|||
---|---|---|---|
#18+
ЦЦаВот так и написано - PUInt64? Не PUINT64? В любом случае, вопрос неполон без приведения описания этого типа (а в библиотеке могли своё описание сделать). Код: plaintext 1. 2.
ЦЦаа именно адресом (VarPtr) счётчика.Нет там не Ptr, там переданные байты в явном целом виде возвращаются. 0 она без проблем возвращает Если переобозвать в unsigned в структуре в C, то байты исправно возвращает. ЦЦа либо как UDT из двух Long-овКак это записать на VB6? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2012, 19:00 |
|
Во что надо преобразовывать C++ -ное PUInt64 ?
|
|||
---|---|---|---|
#18+
Дмитрий77, Ну, тогда Код: vbnet 1. 2.
Про Currency надо помнить про множитель/делитель на 10000, и что он signed (но поскольку траффик в эксабайты слабо представляеЦЦа, можно забить). Дмитрий77Как это записать на VB6?Я удивляеЦЦа. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2012, 19:20 |
|
Во что надо преобразовывать C++ -ное PUInt64 ?
|
|||
---|---|---|---|
#18+
ЦЦа, Я оставил так в C коде: unsigned m_totalBytes; unsigned m_totalPackets; Хрен с ними с Warning-гами. Иначе VB6 выпадает, чего бы я в VB ни писал, причем совсем не в том месте кода где эта структура передается или принимается. А вообще я пока не решил, нужны ли мне эти m_totalBytes. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2012, 20:01 |
|
|
start [/forum/topic.php?fid=60&msg=37923500&tid=2157499]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 293ms |
total: | 439ms |
0 / 0 |