Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi umysqlvio typumwandlung (https://www.delphipraxis.net/143323-umysqlvio-typumwandlung.html)

SparrowSX 13. Nov 2009 10:44

Datenbank: MySQL • Version: 5.x • Zugriff über: directmysql

umysqlvio typumwandlung
 
kurze vorgeschichte:
hab ein prog mit der dbexpress komponente geschrieben was auf einem anderen pc ohne delphi leider nicht läuft. (gibt anscheinend auch keine lösung dafür)
hatte nun vor das ganze über directmysql zu lösen. - leider tritt dort folgender fehler auf:

[DCC Fehler] umysqlvio.pas(964): E2089 Ungültige Typumwandlung


weiter unten der gleiche fehler nocheinmal:

[DCC Fehler] umysqlvio.pas(980): E2089 Ungültige Typumwandlung




jemand ne lösung?

nochmal wichtige daten:
- delphi 2009 arc
- DirectMySQLObjects122
(- mysql-server 5.x)

mkinzler 13. Nov 2009 10:47

Re: umysqlvio typumwandlung
 
Was steht den in der Zeile des Sourcecodes?

SparrowSX 13. Nov 2009 10:52

Re: umysqlvio typumwandlung
 
Delphi-Quellcode:
          {$IFNDEF _WIN_}
          ffcntl_mode := fcntl(fsd, F_GETFL);
          {$ENDIF}
          {$IFDEF _WIN_}
          vio_blocking(false);
          {$ENDIF}
          //try to resolve the host                         <- Zeile 964
          fillchar(sock_addr,sizeof(sock_addr),#0);
          sock_addr.sin_family := AF_INET;
          ip_addr := {$IFOPT R+}cardinal{$ENDIF}(inet_addr(pchar(host))); // thanks Jiri Barton
          if (ip_addr <> INADDR_NONE) then
            sock_addr.sin_addr:=in_addr(ip_addr)
          else
            begin
              hp:=gethostbyname(pchar(host));
              if (hp=nil) then
                begin
                   flast_errno:=CR_UNKNOWN_HOST;
                  {$IFDEF _WIN_}
                  flast_error:=format(client_errors[(flast_errno)-CR_MIN_ERROR],[host, WSAGetLastError]);
                  {$ELSE}
                  flast_error:=format(client_errors[(flast_errno)-CR_MIN_ERROR],[host, errno]);
                  {$ENDIF}                                                                          <- Zeile 980
                   result:=-7; //we can't connect
                        closesocket(sock);
                     exit;
                end;

SparrowSX 30. Jan 2010 12:00

Re: umysqlvio typumwandlung
 
Nachdem ich die Suche nach einer Antwort vorerst aufgegeben hatte bin ich nun durch zufall auf die Lösung gestoßen.

Anscheinend funzt directmysql mit delphi 2009 und 2010 nicht nur bei mir nich...
In einem "alten" Forum von sourceforge.net hat sich jemand die arbeit gemacht und die datei/dateien überarbeitet.
[http://sourceforge.net/projects/dire...ssage=7915351]


Die funktionierenden directmysql Dateien für Delphi 2009 und 2010 bietet er hier zum Download an:
http://rapidshare.com/files/32387867...ysql_d2010.zip


Ich habe es bereits getestet und es funktioniert einwandfrei!

Schorschi5566 27. Apr 2010 00:00

Re: umysqlvio typumwandlung
 
Hallo zusammen,

Zitat:

Zitat von SparrowSX
Ich habe es bereits getestet und es funktioniert einwandfrei!

da kann ich leider nicht zustimmen.

Für "normale" Felder scheint die angepasste Version zu funktionieren aber bei exotischeren Feldtypen scheint es Probleme mit den Feldlängen zu geben, was ziemlich heftige Fehler verursachen kann.

Ich habe schon mal drüberdebuggt und bin auf falsche Feldlängen in read_rows gestoßen. Das Ganze im Zusammenhang mit Datensätzen, die ein Feld vom Typ Mediumtext enthalten haben.

Workarround ist eine Abfrage auf genau dieses Feld zu machen anstatt auf * oder mehrere Felder. Zumindest hat das bisher funktioniert.

Selektiert man zusätzlich Felder, die nach dem betreffenden Feld im Datensatz stehen, werden diese teilweise an das Mediumtext-Feld angehängt. Merkt man das nicht, dann zerballert man sich die DB mit fehlerhaften Feldinhalten. Nicht weiter tragisch, aber in halbwegs ernsthaften Anwendungen nicht verwendbar.

Schöne Sch... :(

Muss ich wohl sämtliche DB-Projekte auf mysql.pas mit libmySQL.dll umschreiben. :cheers:


Wollte nur mal schnell 'ne Warnung rausgeben. Vielleicht erreiche ich den Autor/Umschreiber und er kann den Fehler beheben. Mir ist der Code an der Stelle etwas zu kryptisch. :mrgreen:


Viele Grüße,
Schorsch


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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