Announcement

Collapse
No announcement yet.

Textdatei in Blob speichern (Paradox / Delphi6)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Textdatei in Blob speichern (Paradox / Delphi6)

    Ich möchte gerne ne Textdateie in ein Blob Feld speichern.
    Also die Datei als ganzes.
    Wenn ich das über DBMemo mache erhalte ich die Datei im Quellcode.
    Das will ich nicht.
    Gehe ich über DBImage meckert das Programm beim Abspeichern das
    kein gültiges Bildformat vorliegt. (Ist ja auch klar :-) )

    Hat jemand sowas schon mal gemacht und dafür nen Code-Schnipsel für mich ?
    Gruß
    Delorion

  • #2
    Hallo,

    das folgende Beispielprojekt demonstriert verschiedene Alternativen, wie BLOb-Daten (in diesem Fall RTF-Daten) über TQuery verwaltet werden können. Das letzte Beispiel liest die Daten direkt über <b>LoadFromFile</b> aus einer Datei aus:
    <pre>
    { ************************************************** **************
    Source File Name : BLOBQueryMainForm.PAS
    Typ : Formular-Unit
    Autor : Andreas Kosch
    Erstellt am : 03.08.97
    Compiler : Delphi 3.0
    Betriebssystem : Windows 95
    Beschreibung : BLOB-Feld einer Paradox-Tabelle via TQuery
    updaten. In diesem Fall werden drei direkte
    Updates via SQL vorgestellt:
    - AsMemo
    - SetBlobData
    - LoadFromFile
    Revisionen :
    ************************************************** ************** } unit BLOBQuery2MainForm; interface uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Db, StdCtrls, ComCtrls, DBCtrls, Mask, ExtCtrls, DBTables; type
    TFormMain = class(TForm)
    QueryBLOB: TQuery;
    Table1: TTable;
    DataSource1: TDataSource;
    RichEdit1: TRichEdit;
    Table1Hinweis: TStringField;
    Table1RTFMemo: TBlobField;
    QueryBLOBHinweis: TStringField;
    QueryBLOBRTFMemo: TBlobField;
    Splitter1: TSplitter;
    Panel1: TPanel;
    ButtonAsMemo: TButton;
    Panel2: TPanel;
    DBRichEdit1: TDBRichEdit;
    Panel3: TPanel;
    DBNavigator1: TDBNavigator;
    DBEdit1: TDBEdit;
    ButtonSetBlobData: TButton;
    ButtonLoadFromFile: TButton;
    procedure ButtonAsMemoClick(Sender: TObject);
    procedure ButtonSetBlobDataClick(Sender: TObject);
    procedure ButtonLoadFromFileClick(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end; var
    FormMain: TFormMain; implementation {$R *.DFM} (* QueryBLOB.SQL = UPDATE rtfmemo
    SET RTFMemo = :mRTFMemo
    WHERE Hinweis = :sHinweis QueryBLOB.Params = mRTFMemo : BLOB
    sHinweis : String Alle drei Varianten verwenden die gleiche QueryBLOB-
    Konfiguration. *) procedure TFormMain.ButtonAsMemoClick(Sender: TObject);
    begin
    with QueryBLOB do
    begin
    // Update-Variable via AsMemo-Zuweisung füllen
    Params[0].AsMemo := RichEdit1.Lines.Text;
    // Primärschlüssel des ausgewählten Datensatzes übergeben
    Params[1].Value := Table1Hinweis.AsString;
    ExecSQL;
    end;
    // zur Kontrolle die Anzeige via TTable aktualisieren
    Table1.Refresh;
    end; procedure TFormMain.ButtonSetBlobDataClick(Sender: TObject);
    var
    pBlobText : PChar;
    begin
    with QueryBLOB do
    begin
    // Old-Fashion-Way über einen PChar
    pBlobText := RichEdit1.Lines.GetText;
    Params[0].SetBlobData(pBlobText, Length(pBlobText));
    // Primärschlüssel des ausgewählten Datensatzes übergeben
    Params[1].Value := Table1Hinweis.AsString;
    ExecSQL;
    end;
    Table1.Refresh;
    end; procedure TFormMain.ButtonLoadFromFileClick(Sender: TObject);
    const
    sDOCName = 'C:\ablage\d3fs.htm';
    begin
    with QueryBLOB do
    begin
    // direkt aus einer externen Datei importieren
    Params[0].LoadFromFile(sDOCName, ftBlob);
    // Primärschlüssel des ausgewählten Datensatzes übergeben
    Params[1].Value := Table1Hinweis.AsString;
    ExecSQL
    end;
    Table1.Refresh;
    end;

    end.
    </pre&gt

    Comment

    Working...
    X