Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Aus einer SQL- Datenbank ein Binärfeld auslesen (https://www.delphipraxis.net/101637-aus-einer-sql-datenbank-ein-binaerfeld-auslesen.html)

FranzKogler 16. Okt 2007 20:44

Datenbank: MSDE 2000 • Zugriff über: MSADO

Aus einer SQL- Datenbank ein Binärfeld auslesen
 
Hallo,

ich versuche, mit Delphi ein Binärfeld aus einem SQL- Server auszulesen.
Leider bekomme ich immer eine Fehler bei der Typumwandlung.

Beim Feld handelt es sich um ein BYTE- Feld mit der Größe 50.

Hat jemand einen Lösungsansatz für mich ?

var Buffer: array of Byte;
Buffer:=rstTable.Fields['ManagerPassword'];

funktioniert leider nicht.

Gruß Franz

Bernhard Geyer 16. Okt 2007 21:09

Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
 
Such mal nach Beispielen die das gewünschte als BLOB-Feld auslesen.

FranzKogler 19. Okt 2007 19:50

Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
 
kennt jemand einen anderen Ansatz ?

alzaimar 19. Okt 2007 20:07

Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
 
Delphi-Quellcode:
TBlobField(MyTable.FieldByName('MyField')).SaveToStream (MyStream)
Bei persistenten Feldern (MyTableMyField ist ja bereits ein TBlobField)
Delphi-Quellcode:
MyTableMyField.SaveToStream (MyStream)

marabu 19. Okt 2007 20:37

Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
 
Herzlich willkommen in der Delphi-PRAXiS, Franz.

Dein Versuch mit dem Array of Byte war gar nicht so schlecht:

Delphi-Quellcode:
function GetVarBytes(f: TField; var bda: TByteDynArray): Boolean;
begin
  Result := f.DataType = ftVarBytes;
  if Result then
    DynArrayFromVariant(Pointer(bda), f.Value, TypeInfo(TByteDynArray));
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  bda: TByteDynArray;
begin
  with ADOTable do
    if GetVarBytes(FieldByName('varbin'), bda)
      then ShowMessage(IntToStr(Length(bda)))
      else ShowMessage('?');
end;
Wenn keine NUL-Character drin vorkommen, dann kannst du den Feldinhalt auch einfach über die Feld-Methode AsString() bearbeiten.

Freundliche Grüße vom marabu

FranzKogler 20. Okt 2007 17:47

Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
 
Vielen Dank an marabu.
Der Ansatz
DynArrayFromVariant(Pointer(bda), f.Value, TypeInfo(TByteDynArray));
bringt die Lösung.


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