怎么用delphi 把音乐格式的文件 转化成可以存到oralce数据库的文件 我听别人说可以转成流媒体文件保存数据库里 字段是blob型的 然后读的时候还要转 怎么转啊!最好给我留个例子 谢谢!

解决方案 »

  1.   

    多用一下搜索http://topic.csdn.net/t/20050415/12/3938936.html
      

  2.   

    给你个例子:
    var
      MS: TMemoryStream;
    begin
      if not (ClientDataSet1.State in [dsInsert, dsEdit]) then
        ClientDataSet1.Insert;
      MS := TMemoryStream.Create();
      try
        Image1.Picture.Bitmap.SaveToStream(MS);
        ClientDataSet1Images.LoadFromStream(MS);
      finally
        MS.Free;
      end;
      ClientDataSet1.Post;
    end;
      

  3.   


    将流存入字段
      TBlobField(字段).LoadFromStream();
    将字段内容存为流或文件
      TBlobField(字段).SaveToStream();
    如果不能播放流的话,就存为文件,然后播放
      TBlobField(字段).SaveToFile();
      

  4.   

    如下,供楼主参考var 
       Filestream:TFileStream; 
       StreamSize:Int64; 
       ArrayBuffer:Array of byte; 
    begin 
     OpenDialog1.Execute; 
     Filestream:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead); 
     try 
       StreamSize:=Filestream.Size; 
       Filestream.Position:=0; 
       SetLength(ArrayBuffer,StreamSize); 
       Filestream.readbuffer(ArrayBuffer[0],StreamSize); 
       SQLQuery1.SQL.Clear; 
       SQLQuery1.SQL.Add('UPDATE es_map SET mapcon=:pmapcon WHERE mapid=:Pmapid'); 
       SQLQuery1.ParamByName('Pmapcon').SetBlobData(ArrayBuffer,StreamSize); 
       SQLQuery1.ParamByName('Pmapid').AsString:=ClientDataSet1.FieldByName('mapid').AsString; 
       SQLQuery1.ExecSQL; 
       ClientDataSet1.Refresh; 
     finally 
       Filestream.Free; 
     end; 
    读取的例子如下: 
    var 
     Stream2:TMemoryStream; 
     StreamSize:Int64; 
     ArrayBuffer:Array of byte; 
     BitImage:TBitmap; 
     JPEGImage:TJPEGImage; 
    begin 
     Stream2:=TMemoryStream.Create(); 
     BitImage:=TBitmap.Create; 
     JPEGImage:=TJPEGImage.Create; 
     try 
       if ClientDataSet1.FieldByName('MAPCON').IsBlob then 
       begin 
         (ClientDataSet1.FieldByName('MAPCON') as TBlobField).SaveToStream(Stream2); 
         StreamSize:=Stream2.Size; 
         Stream2.Position:=0; 
         showmessage('size='+IntToStr(StreamSize)); 
         SetLength(ArrayBuffer,StreamSize); 
         Stream2.readbuffer(ArrayBuffer[0],StreamSize); 
         Stream2.Position:=0; 
           if (ArrayBuffer[0]=byte('B')) and (ArrayBuffer[1]=byte('M')) then 
           begin 
             BitImage.LoadFromStream(Stream2); 
             DBImage1.Picture.Assign(BitImage); 
           end; 
           if (ArrayBuffer[6]=byte('J')) and (ArrayBuffer[7]=byte('F')) and (ArrayBuffer[8]=byte('I')) and (ArrayBuffer[9]=byte('F')) then 
           begin 
             JPEGImage.LoadFromStream(Stream2); 
             DBImage1.Picture.Assign(JPEGImage); 
           end; 
       end; 
     finally 
       BitImage.Free; 
       JPEGImage.Free; 
       Stream2.Free; 
     end;