Fórum Naum consigo sincronizar imagem e som #228166
27/04/2004
0
Galera, td bem com vcs?
Olha, tô quebrando a cabeça há algum tempo, com a ajuda de tds vcs consegui desenvolver parte do código de um programinha, eu preciso exibir na minha tela imagens(*.bmp), uma por uma de cada pasta e tocar uma música(*.mp3), e quando acabar as imagens acaba o some vai fazer a mesma coisa na próxima pasta.
Bom, achei vários códigos, pensei em vários caminhos, mas naum consegui chegar a uma conclusão, fiz com que mostrasse as pastas contidas num caminho já definido, mas ele naum lê tds as pastas e exibe o e toca o que quero, fiz de td mas naum consegui, coloquei alguns listbox´s para poder me mostrar as respostas, e label´s com o memso objetivo.
Bem o código vai abaixo, só o código de tocar o som naum está mas no fim do código eu vou colocar pra que tenham uma certa noção do jeito que etou tentando fazer.
Especificando melhor, estou com o problema de exibir a imagens de cada pasta e tocar o som e sincronizá-los..
O código vem abaixo:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FileCtrl, StdCtrls, ExtCtrls, MPlayer;
type
TForm1 = class(TForm)
ListBox1: TListBox;
DirectoryListBox1: TDirectoryListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
MediaPlayer1: TMediaPlayer;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
procedure pasta(aLista: TStrings);
procedure imagem();
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
contImg: integer;
implementation
{$R *.dfm}
procedure TForm1.imagem();
begin
Inc(contImg);
end;
// o código abaixo lista todos os arquivos em cada pasta
procedure TForm1.pasta(aLista: TStrings);
var
Rec : TSearchRec;
conta, i: integer;
begin
conta:=0;
for i:= 0 to (ListBox1.Count-1) do
begin
if SysUtils.FindFirst(´c:\teste\´+aLista+´\*.bmp´,faAnyFile, Rec) = 0 then
begin
repeat
conta:=conta+1;
ListBox2.Items.add(´´+(inttostr(i))+´ - ´+(inttostr(conta))+´ - ´+rec.Name+´´);
ListBox3.Items.Add(inttostr(conta));
Label2.Caption:=inttostr(i);
until SysUtils.FindNext(Rec) <> 0;
end;
SysUtils.FindClose(Rec);
begin
Label1.Caption:=inttostr(ListBox2.Count);
end;
end;
end;
// o código abaixo encontra todas as pastas no caminho pré-definido
procedure TForm1.FormCreate(Sender: TObject);
var
x, p, t:Integer;
begin
ListBox1.Clear;
DirectoryListBox1.Directory:=´c:\teste\´;
for x:=0 to DirectoryListBox1.Count - 1 do
begin
p:=Pos(DirectoryListBox1.Directory,DirectoryListBox1.GetItemPath(x));
t:=length(DirectoryListBox1.GetItemPath(x)) - length(DirectoryListBox1.Directory);
if (p > 0) and (t > 0) then
begin
ListBox1.Items.Add(copy(DirectoryListBox1.GetItemPath(x),length(DirectoryLi stBox1.Directory)+2,t));
end;
contImg:=1;
end;
begin
pasta(ListBox1.Items);
end;
end;
//faz a troca de imagens, que naum tá dando certo, qeu ve só uma única pasta e nuam sai dela
procedure TForm1.Timer1Timer(Sender: TObject);
var
a:integer;
begin
timer1.Interval:= 100;
for a:=0 to (ListBox1.Items.Count-1) do
Image1.Picture.LoadFromFile(´C:\teste\´+listbox1.items[a]+´\Imagem´+FormatF loat(´000´,contImg)+´.bmp´);
imagem();
if contImg=4 then
contImg:=1;
end;
end.
alguns teste foram feitos exibindo as imagens e tocando o som, sem sincronizá-los , mas já com o caminho pré-determinado, o código segue abaixo:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, mmsystem, MPlayer;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
MediaPlayer1: TMediaPlayer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
contImg:integer;
implementation
uses Math;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Interval:= 100;
Image1.Picture.LoadFromFile(´C:\Imagem´+FormatFloat(´000´,contImg)+´.bmp´);
Inc(contImg);
if contImg=4 then
contImg:=1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
contImg:=1; //grande sacada
mediaplayer1.FileName:= ´c:\pesca1.mp3´;
mediaplayer1.Open;
timer1.Enabled:= true;
mediaplayer1.Play;
end;
end.
As ajudas serão muito bem vindas, qualquer outra forma de realizar isso será tbm muito bem vinda, o programa ainda precisa de algumas partes como enviar essas imagens pela serial para uma memória, mas acho que isso seria uma outra batalha o que preciso de imediato seria isso, o funcionamento por completo desse código, haverá centenas de imagens em cada pasta e apenas um arquivo de áudio, os nomes das imagens com vcs perceberam mudam só o número, e o arquivos de som posso especificar com um só nome.
Obrigado pela atenção
Olha, tô quebrando a cabeça há algum tempo, com a ajuda de tds vcs consegui desenvolver parte do código de um programinha, eu preciso exibir na minha tela imagens(*.bmp), uma por uma de cada pasta e tocar uma música(*.mp3), e quando acabar as imagens acaba o some vai fazer a mesma coisa na próxima pasta.
Bom, achei vários códigos, pensei em vários caminhos, mas naum consegui chegar a uma conclusão, fiz com que mostrasse as pastas contidas num caminho já definido, mas ele naum lê tds as pastas e exibe o e toca o que quero, fiz de td mas naum consegui, coloquei alguns listbox´s para poder me mostrar as respostas, e label´s com o memso objetivo.
Bem o código vai abaixo, só o código de tocar o som naum está mas no fim do código eu vou colocar pra que tenham uma certa noção do jeito que etou tentando fazer.
Especificando melhor, estou com o problema de exibir a imagens de cada pasta e tocar o som e sincronizá-los..
O código vem abaixo:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FileCtrl, StdCtrls, ExtCtrls, MPlayer;
type
TForm1 = class(TForm)
ListBox1: TListBox;
DirectoryListBox1: TDirectoryListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
MediaPlayer1: TMediaPlayer;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
procedure pasta(aLista: TStrings);
procedure imagem();
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
contImg: integer;
implementation
{$R *.dfm}
procedure TForm1.imagem();
begin
Inc(contImg);
end;
// o código abaixo lista todos os arquivos em cada pasta
procedure TForm1.pasta(aLista: TStrings);
var
Rec : TSearchRec;
conta, i: integer;
begin
conta:=0;
for i:= 0 to (ListBox1.Count-1) do
begin
if SysUtils.FindFirst(´c:\teste\´+aLista+´\*.bmp´,faAnyFile, Rec) = 0 then
begin
repeat
conta:=conta+1;
ListBox2.Items.add(´´+(inttostr(i))+´ - ´+(inttostr(conta))+´ - ´+rec.Name+´´);
ListBox3.Items.Add(inttostr(conta));
Label2.Caption:=inttostr(i);
until SysUtils.FindNext(Rec) <> 0;
end;
SysUtils.FindClose(Rec);
begin
Label1.Caption:=inttostr(ListBox2.Count);
end;
end;
end;
// o código abaixo encontra todas as pastas no caminho pré-definido
procedure TForm1.FormCreate(Sender: TObject);
var
x, p, t:Integer;
begin
ListBox1.Clear;
DirectoryListBox1.Directory:=´c:\teste\´;
for x:=0 to DirectoryListBox1.Count - 1 do
begin
p:=Pos(DirectoryListBox1.Directory,DirectoryListBox1.GetItemPath(x));
t:=length(DirectoryListBox1.GetItemPath(x)) - length(DirectoryListBox1.Directory);
if (p > 0) and (t > 0) then
begin
ListBox1.Items.Add(copy(DirectoryListBox1.GetItemPath(x),length(DirectoryLi stBox1.Directory)+2,t));
end;
contImg:=1;
end;
begin
pasta(ListBox1.Items);
end;
end;
//faz a troca de imagens, que naum tá dando certo, qeu ve só uma única pasta e nuam sai dela
procedure TForm1.Timer1Timer(Sender: TObject);
var
a:integer;
begin
timer1.Interval:= 100;
for a:=0 to (ListBox1.Items.Count-1) do
Image1.Picture.LoadFromFile(´C:\teste\´+listbox1.items[a]+´\Imagem´+FormatF loat(´000´,contImg)+´.bmp´);
imagem();
if contImg=4 then
contImg:=1;
end;
end.
alguns teste foram feitos exibindo as imagens e tocando o som, sem sincronizá-los , mas já com o caminho pré-determinado, o código segue abaixo:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, mmsystem, MPlayer;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
MediaPlayer1: TMediaPlayer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
contImg:integer;
implementation
uses Math;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Interval:= 100;
Image1.Picture.LoadFromFile(´C:\Imagem´+FormatFloat(´000´,contImg)+´.bmp´);
Inc(contImg);
if contImg=4 then
contImg:=1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
contImg:=1; //grande sacada
mediaplayer1.FileName:= ´c:\pesca1.mp3´;
mediaplayer1.Open;
timer1.Enabled:= true;
mediaplayer1.Play;
end;
end.
As ajudas serão muito bem vindas, qualquer outra forma de realizar isso será tbm muito bem vinda, o programa ainda precisa de algumas partes como enviar essas imagens pela serial para uma memória, mas acho que isso seria uma outra batalha o que preciso de imediato seria isso, o funcionamento por completo desse código, haverá centenas de imagens em cada pasta e apenas um arquivo de áudio, os nomes das imagens com vcs perceberam mudam só o número, e o arquivos de som posso especificar com um só nome.
Obrigado pela atenção
Salvati
Curtir tópico
+ 0
Responder
Posts
27/04/2004
Salvati
gente me ajuda ai por favor!
valeu
valeu
Responder
Gostei + 0
28/04/2004
Salvati
pessoal me ajuda ai preciso memso de ajuda!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)