Mysql_fetch_lengths zurückgegebene Array von int64 auf Lazarus/LinuxLinux

Linux verstehen
Anonymous
 Mysql_fetch_lengths zurückgegebene Array von int64 auf Lazarus/Linux

Post by Anonymous »

In Lazarus lade ich libmariadb.so.3 v3.3.10 über LoadLibrary . (Führte einen weiteren Test mit libmysqlclient.so.21 v8.0.41 durch). Wenn die Felder eines Abfrageergebnisses iteriert werden, wird die Länge eines Wertes durch die Elemente des Arrays angezeigt, die von mysql_fetch_lengths () :
zurückgegeben wurden

Code: Select all

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>
Das hat jahrelang gut funktioniert, in Delphi und auch in Lazarus mit einer ausführbaren Windows. Ich verwende dieselben libmysql- und libmariadb -Bibliotheken unter Windows wie unter Linux. Wenn ich nun denselben Code in Lazarus für Linux kompiliere und ihn ausführe, scheint die TMYSQL_LENGHS 
int64 Elemente (mit einer Größe von 8 Bytes) zu enthalten, nicht LongWord/UINT32 (mit einer Größe von 4 Bytes). Bei der Aufbewahrung der Definition von Langwort zeigt die Array -Schleife doppelt so viele Elemente wie Spalten, mit einem "0" bei jedem ungeraden Index, z. B.:
fieldno LengthsPointer[fieldno]
0 2
1 0
2 10
3 0
4 3
5 0
6 1024
7 0
< /code>
Die Dokumentation besagt eindeutig, dass dies auch für die neuesten Versionen unsignierte lange ganze Zahlen sein sollte. Ich gehe davon aus, dass ich etwas falsch mache. Tue ich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post