AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC TFDIBInfo: Invalid clumplet buffer structure
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC TFDIBInfo: Invalid clumplet buffer structure

Ein Thema von WiPhi · begonnen am 25. Sep 2017 · letzter Beitrag vom 26. Sep 2017
 
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#1

FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 25. Sep 2017, 13:41
Datenbank: Firebird • Version: 2.5.7 • Zugriff über: FireDAC
Hallo alle zusammen,

ich habe ein Problem beim Zugriff auf meine Firebird Datenbank via FireDAC. Ich möchte von der Datenbank die Versionsinformationen auslesen, hierfür verwende ich folgende Funktion:
Delphi-Quellcode:
function TDBInterface.RetrieveServerVersionStr: String;
var
  FIBServerProperties: TFDIBInfo;
  Version: TIBInfo.TVersion;
begin
  Result := EmptyStr;
  FIBServerProperties := TFDIBInfo.Create(nil);
  try
    FIBServerProperties.Host := 'SERVERNAME';
    FIBServerProperties.Port := 3050;
    FIBServerProperties.Protocol := ipTCPIP;
    FIBServerProperties.DriverLink := FDPhysFBDriverLink;
    FIBServerProperties.UserName := 'SYSDBA';
    FIBServerProperties.Password := 'pass';

    FIBServerProperties.QueryTimeout := 3;
    FIBServerProperties.ConnectTimeout := 5;

    FIBServerProperties.GetVersion(Version); // <- EIBNativeException mit der Meldung [FireDAC][Phys][FB]Invalid clumplet buffer structure: buffer end before end of clumplet - clumplet too long
    Result := Version.FServerStr;
  finally
    FIBServerProperties.Free;
  end;
end;
Der Aufruf von
Code:
FIBServerProperties.GetVersion(Version)
führt zu der im Code genannten Exception.

Durch etwas probieren, habe ich folgendes herausfinden können:
Kommentiere ich die Zeilen
Code:
    FIBServerProperties.QueryTimeout := 3;
    FIBServerProperties.ConnectTimeout := 5;
aus, wird FIBServerProperties.GetVersion(Version) korrekt ausgeführt und ich erhalte die gewünschten Informationen. Jedoch funktioniert das nur auf einer lokalen Datenbank. Auf einer Datenbank, die auf einem Server liegt, erhalte ich
Code:
EIBNativeException mit der Meldung '[FireDAC][Phys][FB]Unable to complete network request to host
(Vermutlich, weil der Server keine Zeit zum Antworten bekommt.)

Suche ich nach dem Buffer Fehler, finde ich einen Eintrag in der Firebird FAQ: http://www.firebirdfaq.org/faq320/
Zitat:
If you use Firebird API directly from C, check your code. Otherwise it may be a bug in your connectivity library. It is also a common error message when you don't use multibyte character sets properly (for example UTF-8).
Kann mir jemand helfen oder ist das ein Fehler in der FireDAC Schnittstelle?

Über Antworten und Tipps würde ich mich sehr freuen!

P.S.: Ich verwende übrigens FireDAC aus der Delphi Prof. 10.2.1
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 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