Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Manejar Objetos por funciones (https://www.clubdelphi.com/foros/showthread.php?t=63400)

cirilungol 12-02-2009 09:11:57

Manejar Objetos por funciones
 
Hola buenas Gurues del Delphi.


Tengo una duda, he vuelto a las andadas de la programación delphi y lo que antaño sabia hacer muy bien ahora ni me acuerdo... weno me da errores :eek:

Tengo la intención de crear una funcion en la cual le pase una variable de tipo TMovieplaye.

En esta función lo que quiero es llamarla tantas veces como me sea preciso, pero que el objeto se libere y se cree cuando le llame.

vendria a ser:


Código Delphi [-]
procedure tform1.VideoPlay(sVideo: TMovieplayer);
begin
   
   //Liberar el objeto... aunque no se si aqui sería correcto
   //Aqui es donde se supone que tendria que cargar el objeto
   //(objeto as TMovieplayer)....vago recuerdo el mio

   with objeto do 
   begin
        show;
        //El openSync deja el video en marcha hasta que finalice, no hará otra acción pero si que recorre codigo... 
        OpenSync;
   end;

end;


weno no se si me he podido explicar con toda claridad pero toda ayuda es buena, por muy pequeña que pueda ser.

muchas gracias por leerme!!!!!

Lord Delfos 12-02-2009 23:30:18

Bueno... Sí... No entiendo muy bien porqué querrías hacer lo que yo entiendo que querés hacer...:rolleyes: Pero:

Código Delphi [-]
procedure  TForm1.VideoPlay(var sVideo: TVideoPlayer);
begin
  if Assigned(sVideo) then
    begin
    sVideo.Free;
    sVideo:= TVideoPlayer.Create;
    with sVideo do
      begin
      Show;
      OpenSync;      
      end;
    end;
end;

No sé si TVideoPlayer.Create recibirá parámetros...

En fin, sVideo está asignado, esto es, si está instanciado, se destruye y se vuelve a crear.

Espero sea eso lo que decías.

Saludongos.

cirilungol 16-02-2009 09:47:50

Gracias por contestar,

Código Delphi [-]
    sVideo.Free;
    sVideo:= TVideoPlayer.Create;

esta parte la tenia mas o menos clara, pero lo que me falta es pasar y cargar ese
Código:

svideo
mediante una funcion ya que puede darse que pida diferentes vidios y estos han de mostrarse uno detras de otro.

Lord Delfos 16-02-2009 20:27:38

Según te entiendo yo, esa función andaría muy bien. Es decir, habría que llamarla una vez por cada video... Creo que no te entiedo:o...

cirilungol 17-02-2009 09:09:51

Lo has entendido muy bien.

Yo antaño, me acuedo de haber utilizado funciones de la manera que explico al principio.

Pero no me acuerdo de como se hacia correctamente.

A ver si me puedo explicar mejor.

video1,video2

estos videos estan creados en la aplicación, y se cargan con una secuencia, haciendo un
Código Delphi [-]
opensync;
que hace que no haga nada mas hasta que termine el video.

Pues bien, una vez se han mostrado los videos, al volver a mostrarlos, tardan muchisimo, y eso que la primera vez lo hace rapidisimo y de forma eficáz.

El problema de que tarden tanto en volver a mostrarse es lo que me trae de cabeza. Y por ello pensé en una función que liberase y crease el objeto pasado por la funcion.

Código Delphi [-]

procedure tform1.VideoPlay(sVideo: TMovieplayer);
begin
   
   //Liberar el objeto... aunque no se si aqui sería correcto
   //Aqui es donde se supone que tendria que cargar el objeto
   //(objeto as TMovieplayer)....vago recuerdo el mio

   with (sVideo as TMovieplayer) do //Modificado para tener un poco mas claro que hacer con el objeto pasado por el procedimiento
   begin
        show;
        //El openSync deja el video en marcha hasta que finalice, no hará otra acción pero si que recorre codigo... 
        OpenSync;
   end;

end;


he retocado el codigo a ver si se tiene una idea mas clara de lo que quiero hacer.

Gracias por contestar


La franja horaria es GMT +2. Ahora son las 21:11:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi