Mysql_fetch_lengths возвращающий массив Int64 на Lazarus/linuxLinux

Ответить
Anonymous
 Mysql_fetch_lengths возвращающий массив Int64 на Lazarus/linux

Сообщение Anonymous »

В Лазаре я загружаю libmariadb.so.3 v3.3.10 через LoadLibrary . (Сделал еще один тест с libmysqlclient.so.21 v8.0.41). Когда итерация через поля результата запроса, длина значения обозначена элементами массива, возвращаемых из mysql_fetch_lengths () :

Код: Выделить всё

type
PMYSQL_LENGTHS = ^TMYSQL_LENGTHS;
TMYSQL_LENGTHS = array[0..4095] of LongWord;
...
mysql_fetch_lengths: function(Result: PMYSQL_RES): PMYSQL_LENGTHS; cdecl;
...
var
LengthsPointer: PMYSQL_LENGTHS;
begin
LengthsPointer := mysql_fetch_lengths(FCurrentResults);
for i:=0 to NumFieldsInResult do
showmessage(IntToStr(LengthsPointer^[i]));
< /code>
, который хорошо работал в течение многих лет, в Delphi, а также в Лазаре с исполняемым файлом Windows. Я использую те же библиотеки Libmysql и Libmariadb в Windows, что и на Linux. Теперь, когда я составляю один и тот же код в Lazarus для Linux и запускаю его, TMYSQL_Lengths 
, кажется, содержит элементы Int64 (с размером 8 байтов), а не Longword/Uint32 (с размером 4 байта). При сохранении определения длинного слова , цикл массива показывает вдвое больше элементов, чем столбцы, с «0» в каждом нечетном индексе, например ,::
>>fieldno LengthsPointer[fieldno]
0 2
1 0
2 10
3 0
4 3
5 0
6 1024
7 0
< /code>
В документации четко указывается, что они должны быть без знака длинных целых чисел, даже для новейших версий. Поэтому я предполагаю, что делаю что -то не так. Я?

Подробнее здесь: https://stackoverflow.com/questions/794 ... arus-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»