Na verdade Luis, o FireBirde pode armazenar seus sons e ou até vídeos numa boa, segunda as especificações, o FireBird pode trabalhar com um arquivo de banco dedados de 10 TERABYTES, será praticamente a mesma velocidade de que se trabalhasse com um de 10 MegaBytes.
Att. Ricardo Berti ----- Original Message ----- From: Luis Lopes To: delphi-br@yahoogrupos.com.br Sent: Thursday, October 27, 2005 5:27 PM Subject: Re: [delphi-br] Som usando campos blob Valeu Sérgio! No ano passado, na empresa onde eu trabalhava, tive que fazer essa opção, para trabalhar com imagem e optei por file system. Aqui, onde estou agora, optaram por salvar em blob... fui contra, mas... []´s Luis Alberto. --- SERGIO RICARDO ANDRADE DE CARVALHO <[EMAIL PROTECTED]> escreveu: > Caro Luis, > > Pense bem se voce deve realmente gravar estes > arquivos de som dentro dos campos blobs, se não > tiver outra opção procure compactar os arquivos > antes de gravá-los, e antes de reproduzi-los > descompacte-os. > Não é recomendada a gravação de arquivos .AVI dentro > de blobs, principalmente se os arquivos forem > grandes. > O ideal é que voce grave em uma tabela do banco, o > endereço dos arquivos .AVI que serão gravados em um > determinado file system, que pode ser um diretório > do windows server, de um storage, do samba (linux), > netware (novell), etc. > Em 2002 tive de escolher entre em gravar arquivos > dos tipos: .MP3, .DOC, .XLS, .PDF, etc em campos > Blob ou em File System, e hoje que tenho por volta > 12.000.000 de registros no Interbase (o GDB está > hoje com 6.7 Gb) dou graças a Deus de ter escolhido > o File System ao invés do blob, voce imagina o > tamanho que o GDB estaria hoje se a escolha fosse o > Blob ?.... > Tem um exemplo em > http://bdn.borland.com/article/0,1410,25364,00.html > que funciona legal. > > > Atenciosamente, > > Sérgio Ricardo Andrade de Carvalho > Divisão de Sistemas Administrativos > [EMAIL PROTECTED] - (11) 3012-1024 > http://www.trf3.gov.br > > > > >>> [EMAIL PROTECTED] 10/27/05 10:51 am > >>> > Pessoal, > > Estou precisando trabalhar com som, na minha > aplicação, que será armazenado no banco. Para isso, > estou usando campos blob. Como não tinha a menor > idéia > de como fazê-lo, perguntei ao nosso amigo google e > ele > me respondeu com o código logo abaixo. > O problema eh q tá dando o erro 'Invalid class > typecast' (na linha indicada no código) e eu não tô > conseguindo resolver. > Alguém pode me dar uma força? > > Agradeço antecipadamente. > > []s > Luis Alberto > > Question and Answer Database > > FAQ1181D.txt Storing/Playing an .AVI file in a > database > Category :Database/VCL > Platform :All > Product :All 32 bit > > Question: > How can I store an AVI file in a database and then > play AVI > files? > > Answer: > AVI files can be stored in BLOB (binary large > object) > fields. > The easiest way to play an AVI file stored in a BLOB > is to write > the BLOB data to a temporary file, then let the > mulimedia player > play the file. The following example demonstrates > how > to store > an AVI file to a BLOB field, and also play the AVI > file from the > BLOB field. > > Example: > > var > FileName : string; > > {This function gets a temporary file name form the > system} > function GetTemporaryFileName : string; > {$IFNDEF WIN32} > const MAX_PATH = 144; > {$ENDIF} > var > {$IFDEF WIN32} > lpPathBuffer : PChar; > {$ENDIF} > lpbuffer : PChar; > begin > {Get the file name buffer} > GetMem(lpBuffer, MAX_PATH); > {$IFDEF WIN32} > {Get the temp path buffer} > GetMem(lpPathBuffer, MAX_PATH); > {Get the temp path} > GetTempPath(MAX_PATH, lpPathBuffer); > {Get the temp file name} > GetTempFileName(lpPathBuffer, > 'tmp', > 0, > lpBuffer); > {Free the temp path buffer} > FreeMem(lpPathBuffer, MAX_PATH); > {$ELSE} > {Get the temp file name} > GetTempFileName(GetTempDrive('C'), > 'tmp', > 0, > lpBuffer); > {$ENDIF} > {Create a pascal string containg} > {the temp file name and return it} > result := StrPas(lpBuffer); > {Free the file name buffer} > FreeMem(lpBuffer, MAX_PATH); > end; > > {Read a AVI file into a blob field} > procedure TForm1.Button1Click(Sender: TObject); > var > FileStream: TFileStream; {to load the avi file} > BlobStream: TBlobStream; {to save to the blob} > begin > {Allow the button to repaint} > Application.ProcessMessages; > {Turn off the buttons} > Button1.Enabled := false; > Button2.Enabled := false; > {Assign the avi file name to read} > FileStream := TFileStream.Create( > > 'C:\PROGRA~1\BORLAND\DELPHI~1\DEMOS\COOLSTUF\COOL.AVI', > fmOpenRead); > Table1.Edit; > {Create a BlobStream for the TField Table1AVI} > BlobStream := TBlobStream.Create(Table1AVI, > bmReadWrite); <------------- erro nesta linha (uso > query em vez de table) > {Seek to the Beginning of the stream} > BlobStream.Seek(0, soFromBeginning); > {Delete any data that may be there} > BlobStream.Truncate; > {Copy from the FileStream to the BlobStream} > BlobStream.CopyFrom(FileStream, FileStream.Size); > {Free the streams} > FileStream.Free; > BlobStream.Free; > {Post the record} > Table1.Post; > {Enable the buttons} > Button1.Enabled := true; > Button2.Enabled := true; > end; > > {Read an avi stored in a blob, and play it} > procedure TForm1.Button2Click(Sender: TObject); > var > FileStream: TFileStream; {a temp file} > BlobStream: TBlobStream; {the AVI Blob} > begin > {Create a blob stream for the AVI blob} > BlobStream := TBlobStream.Create(Table1AVI, > bmRead); > <------------------ erro nesta linha > if BlobStream.Size = 0 then begin > BlobStream.Free; > Exit; > end; > {Close the media player} > MediaPlayer1.Close; > {Reset the file name} > MediaPlayer1.FileName := ''; > {Refresh the play window} > MediaPlayer1.Display := Panel1; > Panel1.Refresh; > {if we have a temp file then erase it} > if FileName <> '' then > DeleteFile(FileName); > {Get a temp file name} > FileName := GetTemporaryFileName; > {Create a temp file stream} > FileStream := TFileStream.Create(FileName, > fmCreate or > fmOpenWrite); > {Copy the blob to the temp file} > FileStream.CopyFrom(BlobStream, BlobStream.Size); > {Free the streams} > === message truncated === _______________________________________________________ Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula cupons e concorre a mais de 500 prêmios! Participe! http://yahoo.fbiz.com.br/ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html