AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datei aus Datenbank auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Datei aus Datenbank auslesen

Ein Thema von hirnstroem · begonnen am 23. Mär 2007 · letzter Beitrag vom 23. Mär 2007
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Datei aus Datenbank auslesen

  Alt 23. Mär 2007, 12:09
Datenbank: Access • Zugriff über: ADO
'loha Folks,

ich habe soeben eine Textdatei in einer Access Datenbank gespeichert und frage mich wie denn diese wieder ausgelesen wird -.-

Die Datei wurde in einem als OLE-Objekt definierten Feld gespeichert.

Die Datei möchte ich beim auslesen entweder in ein TIWFile-Objekt (IntraWeb) oder einen Stream einlesen, weiss aber nicht so wirklich wie.

Ich benötige also folgendes für eine Textdatei:

Delphi-Quellcode:
var
  imgReceived: TIWImage;
begin
  imgReceived.Picture.Assign((DataSet.FieldByName('Image') As TBlobField));
Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#2

Re: Datei aus Datenbank auslesen

  Alt 23. Mär 2007, 12:45
Hier mal ein Beispiel, wie ich formatierten Richtext in einer Tabelle ausgelesen habe.

Delphi-Quellcode:
      
      ms:=TMemoryStream.Create;
      (dm1.q_MainEdit.FieldByName('FormatArbeiten') as TBlobField).SaveToStream(ms);
      ms.Position:=0;
      frm_termin.RichEdit1.Lines.LoadFromStream(ms);
      ms.Free;
Geht natürlich umgekehrt auf die gleiche Weise. Ich denke mit einer AccessDB wird das wohl auch funzen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Datei aus Datenbank auslesen

  Alt 23. Mär 2007, 13:06
Dankeschön Captnemo,

leider löst die von dir beschriebene Variante bei mir eine EAbstractError-Exception aus, weshalb auch immer. Der Code sieht wie folgt aus:

Delphi-Quellcode:
procedure InitBootload(Sender: TObject);
var
  BootloadStream: TStream;
begin
  BootloadStream := TStream.Create;
  UserSession.ADODataSet_Bootload.Open;
  (UserSession.ADODataSet_Bootload.FieldByName('DIBootloadFile') as TBlobField).SaveToStream(BootloadStream); // <- gibt den abstrakten Fehler
  ...
  BootloadStream.Free;
end;
Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4

Re: Datei aus Datenbank auslesen

  Alt 23. Mär 2007, 13:18
Hab mal kurz in die Delphihilfe geschaut:

Zitat:
TStream ist eine abstrakte bzw, rein virtuelle (C++ Terminologie) Klasse. Erstellen Sie keine Instanzen von TStream. Dieser Typ enthält abstrakte bzw. virtuelle Methoden, die überschrieben werden müssen. Abgeleitete Stream-Objekte wie Speicher- und Datei-Streams, die für Stream-Operationen mit Komponenten eingesetzt werden, werden beim Einsatz der globalen Funktionen ReadComponentRes und WriteComponentRes automatisch erstellt. Wenn andere Arten von Informationen in den Stream gestellt werden sollen, wählen Sie eine abgeleitete Klasse, die den jeweiligen Daten- und Speicherbedarf erfüllt. Dazu gehören

TFileStream (zur Bearbeitung von Dateien)
TStringStream (zur Manipulation in-Speicherstrings)
TMemoryStream (zur Bearbeitung von Speicherpuffern)
TBlobStream (für die Arbeit mit BLOB-Feldern)
TWinSocketStream (für das Lesen und Schreiben über eine Socket-Verbindung)
TOleStream (für das Lesen und Schreiben über eine COM-Schnittstelle)
Wenn das richtig interpretiere, dann empfielt Borland hier dass man ein abgeleitetes Object verwenden. In deinem Falle vielleicht TMemoryStream, wie ich es auch gemacht habe.

Probier das doch mal aus.

Ich denke für eine TStream fehlt ja in deinem Quellcode die Information, wass denn mit den gelesenen Daten zu passieren hat. Sollen die in den Speicher? in ein OLE-Object? Oder was?
Und um sich mit sowas nicht rumzuschlagen, würde ich einfach das TMemoryStream benutzen. Oder gleich ein TFileStream, das mußt du mal ausprobieren. Bei einem TFileStream übergibst du ja einen Dateinamen. Dann weiß der Stream auch wohin mit den Daten.

Aber ich finde die TMemoryStream.SaveToFile hier einfacher....
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datei aus Datenbank auslesen

  Alt 23. Mär 2007, 13:31
Jetzt versteh' ich. In der Tat, mit TStream-Nachkommen funktioniert die Sache nun auch -.-

Vielen Dank für deine Hilfe.
inde deus abest
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:57 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