Database - Delphi

7 отговора 297 прегледа
#1

Database - Delphi

Зравейте, имам затруднения с четенето на полета от тип Blob. Ето и питанките ми:

1. Как може да се види BlobField през TImage компонент?
2. Как може да се отвори BlobField (ако е програма)?
3. Може ли ако BlobField е музикален файл да се пусне през TMediaPlayer?

Благодаря ви предварително за мненията

Отговор
в отговор на DayDio #2

Re: Database - Delphi

Абе хора защо не четете ХЕЛПА?!?!? Трябва само да натиснете F1!!!

Използвайте Stream
По същия начин, може и с музикални и с всякакъв вид данни да боравите


procedure TBlobField.SaveToStream

Saves the contents of the BLOB field to a stream.

procedure SaveToStream(Stream: TStream);

Description

Use SaveToStream to copy the contents of a BLOB field to a stream. Specify the name of the stream to which the field’s value is saved as the value of the Stream parameter.

Note: The Stream parameter is typically not a BLOB stream. BLOB streams (returned by the dataset’s CreateBlobStream method) provide a completely separate mechanism for streaming data from a BLOB field.

var

MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
try
SQLDataSet1Images.SaveToStream(MS);
Image1.Picture.Bitmap.LoadFromStream(MS);
finally
MS.Free;
end;

end;





Отговор
в отговор на ИвKo #3

Re: Database - Delphi

Tова ми е ясно, мерси все пак.
Някой може ли да отговори на 2 и 3-ти въпрос.
Компонентата TMediaPlayer неможе директно да отвори stream. (пробвах първо да запазя файла някаде и после от там да го отворя обаче става много бавно)

Отговор
в отговор на DayDio #4

Re: Database - Delphi

Не разбрах кое ти е ясно, и защо ако ти е ясно питаш...

НО НА МЕН НЕ МИ Е ЯСНО какво трябва да означава този въпрос:
2. Как може да се отвори BlobField (ако е програма)?

как да се отвори?!? какво означава "ако е програма" ?!?!?!?

3-тия въпрос също нищо не ми говори?!?

БЛОБ-а си е масив от байтове, така че няма музикален, картинков или какъвто и да е друг чешит БЛОБ

Отговор
в отговор на ИвKo #5

Re: Database - Delphi

2. Ако в Blob-а има програма как мога да я отворя?
3. Ако в Blob-а има музикален файл как може да го зареди в TMediaPlayer?

Отговор
в отговор на DayDio #6

Re: Database - Delphi

Отговор на въпрос №2
В среда на Виндовс, НЕ Е възможно, с предоставените от Майкрософт системни функции да се изпълнява блок от памета. Единствената възможност е запазване чрез мемори стреам на физическо устройство и от там да се изпълни чрез ShellExecute например.

Отговор на въпрос №3
Най-лесния начин е да не се използва TMediaPlayer, а да системна функция

uses MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
var
M:TMemoryStream;
begin
M := TMemoryStream.Create;
M.LoadFromFile('C:\WINNT\Media\The Microsoft Sound.wav');
if not playsound(M.Memory, 0, SND_MEMORY or SND_ASYNC)
then ShowMessage('Can not play the sound');
end;

Ако музикален файл е някакъв друг формат, виж в MSDN за acmStreamOpen и mciSendCommand.

Отговор
в отговор на ИвKo #7

Re: Database - Delphi

Много ти благодаря за отговорите

Отговор
в отговор на DayDio #8

Re: Database - Delphi

За мен бе радост, стига да съм помогнал с нещо...

Отговор