Announcement

Collapse
No announcement yet.

TBlobField nicht erkannt

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

  • TBlobField nicht erkannt

    Ich habe mit dem Borland C++ Builder 4.0 eine Datenbank namens 'Grundwort' erstellt. In dieser Datenbank befinden sich Blob-Felder, in die ich jeweils eine Datei einspeichern will.
    Wenn ich in meinem Code das Feld "SoundA1", das ich als binäres Feld eingerichtet habe, anspreche und das Einspeichern der Datei vornehmen will, reagiert der Compiler jedoch mit einem Compiler-Fehler "'LoadFromFile' is not a member of 'TField'".
    Der Befehl, den ich eingegeben habe, lautet:
    Grundwort->FieldByName("SoundA1")->LoadFromFile(Dateiname);
    Dateiname ist der Name der Datei, die eingespeichert werden soll. LoadFromFile ist eine Funktion aus der Klasse TBlobField. Das Feld "SoundA1" wird aber vom Compiler nicht als TBlobField erkannt.

    Andererseits erkennt der Compiler schon, dass es sich um ein Blob-Feld handelt, denn der Code
    if (Grundwort->FieldByName("SoundA1")->IsBlob())
    Application->MessageBox("Feld ist Blob","Hinweis",ID_OK);
    wird compiliert und liefert den Hinweis, dass das Feld ein Blob-Feld ist. Die dazugehörige else-Anweisung habe ich hier weggelassen.
    Im Objekt-Inspektor ist das Feld "SoundA1" auch als TBlobField eingetragen. Wieso erkennt der Compiler hier nur TField und nicht TBlobField? Ist vielleicht etwas mit der Struktur der Datenbank nicht in Ordnung?

  • #2
    Grundwort->FieldByName("SoundA1")->LoadFromFile(Dateiname);

    So funktioniert es auch nicht.
    TStringList *l = new TStringList();
    l->LoadFromFile(Dateiname);

    TStream *stream = Grundwort->CreateBlobStream( Grundwort->FieldByName("SoundA1"),bmReadWrite );

    // bei binärdaten so
    stream->Write( ..., sizeof(...) );
    delete stream;

    // bei Text so
    l->SaveToStream( stream );
    delete Steam;
    l->Clear();
    delete l;

    mfg
    Fred

    Comment

    Working...
    X