Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   No se traducir un codigo VB (https://www.clubdelphi.com/foros/showthread.php?t=36675)

rafa_adrim 20-10-2006 01:38:16

No se traducir un codigo VB
 
Buenas a todos,
Tengo un componente activex para conectarme contra una camaraip de videovigilancia, hasta aquí bien ya que tengo importado dicha activex.

El problema viene que tengo un ejemplo en VB que funciona i que intento pasar a Delphi y no se.

el codigo vb original pone

[VB]
Set theBuilder = New JxGraphicBuilder
theBuilder.JoinPin theBuilder.Decoder, JxMjpegBox1.Displayer

Dim theFilter As JxMjpegFilter
Set theFilter = theBuilder.Filter
theFilter.Mode = JX_FILTER_FIND_ONLY_JPEG_PICTURE

Dim theDecoder As JxMjpegDecoder
Set theDecoder = theBuilder.Decoder
theDecoder.Mode = JX_DECODER_IJL
[/VB]

entiendo lo que hace declar unas varibles y les asigna valores el problema es que no se como hacer el New ya que JxGraphicBuilder es una clase que viene en el activex pero que no tiene metodo constructor.

he intentado hacer lo siguiente.


Código Delphi [-]
// primero declarar las variables
theBuilder : JxGraphicBuilder;
theFilter : JxMjpegFilter;
theDecoder : JxMjpegDecoder;

// despues el siguiente codigo
theBuilder.JoinPin(theBuilder.Decoder,mjpg.Displayer );
theFilter := IJxMjpegFilter(theBuilder.Filter);
theFilter.Mode := JX_FILTER_FIND_ONLY_JPEG_PICTURE;
theDecoder := IJxMjpegDecoder(theBuilder.Decoder);
theDecoder.Mode := JX_DECODER_IJL;





El compilado no peta pero al ejecutar el codigo peta en la primera linia ya que theBuilder no esta creado.

Alguien sabe que deberia hacer.
Muchisimas gracias.

Lepe 20-10-2006 12:00:24

Debe tener constructor por fuerza. Lo que ocurrirá es que no lo implementa él, sino su antecesor:
Código Delphi [-]
TCliente = class  // es equivalente a Class(TObject);

public
  nombre:String;
end;

var c:TCliente;
begin
  c := TCliente.Create(self);
end;
Como verás TCliente no tiene declarado su constructor, pero hereda de TObject que si lo implementa.

Por tanto deberías hacer algo asï:
Código Delphi [-]
// primero declarar las variables
theBuilder : JxGraphicBuilder;
theFilter : JxMjpegFilter;
theDecoder : JxMjpegDecoder;

theBuilder := JxGraphicBuilder.Create; // puede que lleve parámetros);
theBuilder.JoinPin(theBuilder.Decoder, JxMjpegBox1.Displayer);

theFilter := JxMjpegFilter.Create;
theFilter.Assign(theBuilder.Filter); 
// si Thebuilder.filter es un objeto, usas Assign.
// si filter es un tipo string, integer... pues una simple asignación.

theFilter.Mode = JX_FILTER_FIND_ONLY_JPEG_PICTURE;
theDecoder := IJxMjpegDecoder.Create;
theDecoder.Assign(theBuilder.Decoder);
theDecoder.Mode := JX_DECODER_IJL;

Espero te sirva.

Saludos

rafa_adrim 20-10-2006 14:45:29

No funciona, ya lo habia pensado pero el compilador peta.
Debe ser algo como cuando se quiere crear un objeto outlook que se hace de la siguiente manera:

Código Delphi [-]
var
  outlook: OleVariant;
begin
   outlook := GetActiveOleObject('Outlook.Application');

Pero no he encontrado aún como hacerlo.
Gracias de todas maneras.

luisgutierrezb 20-10-2006 19:16:21

y ya importaste los ActiveX ?? te los debio dejar en la barra de componentes, no necesitarias crearlos, simplemente hacer las asignaciones

rafa_adrim 24-10-2006 02:24:02

Lo probaré, gracias.


La franja horaria es GMT +2. Ahora son las 22:41:15.

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