Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi felderanzahl in einer result row bestimmen (https://www.delphipraxis.net/159826-felderanzahl-einer-result-row-bestimmen.html)

alf.stefan 14. Apr 2011 12:59

Datenbank: mmySql • Version: 5.5.11 • Zugriff über: libmysql.dll

felderanzahl in einer result row bestimmen
 
Hallo zusammen,

ich habe grade mal angefangen mit delphi und mysql rumzuspielen.
Benutze dazu die dll libMySql.dll.
Habe dazu ein Tutorial hier gefunden und durchgearbeitet.

Mein kleines Beispielprgramm warf aber eine Frage auf:

ich schreibe in ein TEdit feld einen beliebigen SQL Befehl, wie 'show databases' oder
'select version(), now()'

bei dem 2. Befehl kommt eine Reihe mit 2 Spalten zurück! siehe source

rowCount ist cardinal und sieht für mich auch so aus :-)
len ist vom typ pMySql_Lengths was einem Zeiger auf cardinals entspricht, dachte ich!
aber da kommen schreckliche Zahlen raus!
Nach viel rumprobieren habe ich jetzt diese Lösung gefunden die zu funktionieren scheint.

Delphi-Quellcode:
   
            ......      
            ......
            myRes := mySql_store_result(myDb);
            if assigned(myRes) then
            begin
              RowCount := mySql_num_rows(myRes);
              len := mySql_fetch_Lengths(myRes);
              i:=0;
              aString := '';
              while smallInt(len[i])>0 do // Lösung mit cast nach smallInt!!!!
              begin
                  aString := aString + myRow[i];
                  inc(i);
              end;
              Memo1.Lines.Append(aString);
            end;
            ......
            ......
Meine Frage: Was mache ich falsch? warum muss ich den len[i] nach smallInt casten?
Ich habe nämlich angst dass das nicht immer funktioniert!

Wäre schön wenn mir das jemand erklären könnte!

Gruß

Stefan

DeddyH 14. Apr 2011 13:07

AW: felderanzahl in einer result row bestimmen
 
Versuch es mal so:
Delphi-Quellcode:
len := mysql_num_fields(myRes);

alf.stefan 14. Apr 2011 13:24

AW: felderanzahl in einer result row bestimmen
 
Oh,Oh

danke so klappts :thumb:
ich war mir eigentlich sicher, dass ich es mit 'mySql_num_fields'
auch schon probiert hatte, aber da hat wohl noch ein andres Problemchen gebremst.

Aber eigentlich müsste es doch mit 'mySql_fetch_Lengths' auch gehen!

Gruß

Stefan

DeddyH 14. Apr 2011 13:32

AW: felderanzahl in einer result row bestimmen
 
Gehen müsste das, ist aber umständlicher. Wie ist es so?
Delphi-Quellcode:
while len^[i] > 0 do
Oder so?
Delphi-Quellcode:
while TMYSQL_LENGTHS(len^)[i] > 0 do

alf.stefan 15. Apr 2011 09:06

AW: felderanzahl in einer result row bestimmen
 
Vielen Dank!

Jetzt habe ich das Verstanden!
Das mit dem deReferenzieren klappt!
Da len schon vom typ pMySql_Lengths ist funktioniert schon das erste!
und das zweite natürlich auch.

Gruß

Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz