procedure TMainForm.sbPlayClick(Sender: TObject); var B: TBlobStream; M: TMemoryStream; begin B := TBlobStream.Create(tblSoundsWave, bmRead); // create blob stream Screen.Cursor := crHourGlass; // wait hourglass try M := TMemoryStream.Create; // create memory stream try M.CopyFrom(B, B.Size); // copy from blob to memory stream // Attempt to play sound. Raise exception if something goes wrong Win32Check(PlaySound(M.Memory, 0, SND_SYNC or SND_MEMORY)); finally M.Free; end; finally Screen.Cursor := crDefault; B.Free; // clean up end; end;procedure TMainForm.sbAddClick(Sender: TObject); begin if OpenDialog.Execute then begin tblSounds.Append; tblSounds['FileName'] := ExtractFileName(OpenDialog.FileName); tblSoundsWave.LoadFromFile(OpenDialog.FileName); edTitle.SetFocus; end; end;procedure TMainForm.sbSaveClick(Sender: TObject); begin with SaveDialog do begin FileName := tblSounds['FileName']; // initialize file name if Execute then // execute dialog tblSoundsWave.SaveToFile(FileName); // save blob to file end; end;
delphi5开发人员指南上的代码,先看看
用TFileStream吧,可以搞定任何文件。//ADOTable var TmpFileStream : TFileStream; begin ... open; locate... edit; if FileExists(trim(edtFileName.Text)) then begin TmpFileStream := TFileStream.Create(trim(edtFileName.Text), fmOpenRead); try TBlobField(FieldByName('ImageField')).LoadFromStream(TmpFileStream); Post; finally TmpFileStream.Free; end; end;
我记得有个声音文件可以保存的
var
B: TBlobStream;
M: TMemoryStream;
begin
B := TBlobStream.Create(tblSoundsWave, bmRead); // create blob stream
Screen.Cursor := crHourGlass; // wait hourglass
try
M := TMemoryStream.Create; // create memory stream
try
M.CopyFrom(B, B.Size); // copy from blob to memory stream
// Attempt to play sound. Raise exception if something goes wrong
Win32Check(PlaySound(M.Memory, 0, SND_SYNC or SND_MEMORY));
finally
M.Free;
end;
finally
Screen.Cursor := crDefault;
B.Free; // clean up
end;
end;procedure TMainForm.sbAddClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
tblSounds.Append;
tblSounds['FileName'] := ExtractFileName(OpenDialog.FileName);
tblSoundsWave.LoadFromFile(OpenDialog.FileName);
edTitle.SetFocus;
end;
end;procedure TMainForm.sbSaveClick(Sender: TObject);
begin
with SaveDialog do
begin
FileName := tblSounds['FileName']; // initialize file name
if Execute then // execute dialog
tblSoundsWave.SaveToFile(FileName); // save blob to file
end;
end;
var
TmpFileStream : TFileStream;
begin
...
open;
locate...
edit;
if FileExists(trim(edtFileName.Text)) then begin
TmpFileStream := TFileStream.Create(trim(edtFileName.Text), fmOpenRead);
try
TBlobField(FieldByName('ImageField')).LoadFromStream(TmpFileStream);
Post;
finally
TmpFileStream.Free;
end;
end;
如果用adoquery则,应该怎么来做呢???