Einzelnen Beitrag anzeigen

danieleh

Registriert seit: 1. Dez 2005
54 Beiträge
 
#10

Re: Blob: Filestream und Zusatzinformation

  Alt 26. Mär 2009, 11:55
Also, ich habe es beinahe hingekriegt, allerdings fehlt mit das letzte, entscheidende stück Code um die Datei aus dem Blob zu bekommen.

Delphi-Quellcode:
procedure TfCimput.test1Click(Sender: TObject);
var
  Strm1, Strm2: TMemoryStream;
  blob, bs: TStream;
  sLen: integer;
  Fname: ansistring;
begin
  // Strm1 := TMemoryStream.Create;
  // Strm2 := TMemoryStream.Create;

  with fCdata do
  begin
    if D_DOCS.FieldByName('F_BLB').IsNull then exit;
    bs:=D_DOCS.CreateBlobStream(D_DOCS.FieldByName('F_BLB'),bmRead); // <-- MemoryStream geht hier nicht, deswegen nur Stream

    bs.Seek(0,soFromBeginning);
    bs.ReadBuffer(sLen,sizeof(sLen)); // read lenght filename -stimmt (zb. 7)
    showmessage(inttostr(sLen));

    bs.Seek(0,soFromBeginning);
    bs.ReadBuffer(sLen,sizeof(sLen));
    sLen:=sLen;
    SetLength(Fname, sLen);
    bs.ReadBuffer(Fname[1], sLen); // read filename -stimmt (zb. log.txt)
    showmessage(Fname);
    odf := GetTempDir+Fname;

    bs.ReadBuffer(sLen, SizeOf(sLen)); // read lenght file -stimmt (zb. 4567)
    showmessage(inttostr(sLen));

    Wie Weiter um den Rest vom Stream als Datei speichern ?


    //SaveDialog.FileName := odf;
    // TBlobField(D_DOCS.FieldByName('F_BLB')).SaveToFile(SaveDialog.FileName);

  end;
  bs.Free;
 // Strm1.Free;
 // Strm2.Free;
end;
Leider stecke ich da Fest.
  Mit Zitat antworten Zitat