Deberia ser mas o menos
Código Delphi
[-]
procedure Proc1;
var
BRN054 : Variant
Entrada : Variant;
Salida : Variant;
Control : String;
begin
BRN100 := CreateOleObject('EOL.BRN100P'); try
Entrada:= VarArrayCreate([0,7], VarOleStr);
Salida:= VarArrayCreate([0,7], VarOleStr);
Control:= 'MAN110D';
BRN100.Logon;
BRN100.Brn100(Control,Entrada,Salida);
BRN100.Logoff;
finally
BRN100:=nothing end;
end;
Es importante liberar los objetos COM una vez dejen de usarse. Es muy raro lo que mencionas, son 2 componentes diferentes....no deberia haber conflictos a menos que compartas un recurso como un archivo de texto, varibles globales o algo asi. En esos casos debes poner una seccion critica, o mejor, reorganizar el codigo por algo mejor.
No olvides que puedes usar el depurador de delphi para el componente COM tambien! No debugees a ciegas que es horrible. Si esta hecho en otro lenguaje como VB, haz un proyecto de prueba en VB y depura desde alli.
Como critica constructiva, las variables tienen nombres muy raros, deberias evitar al maximo acronimos o siglas que no sean del dominio publico y reemplazar por nombres obvios. Por ejemplo
Código Delphi
[-]
procedure Proc1;
var
ServidorProduccion: Variant
Entrada : Variant;
Salida : Variant;
Control : String;
begin
ServidorProduccion:= CreateOleObject('EOL.BRN100P');
.
.
end;
Un pequeño tip: SIEMPRE que exista un comentario que intenta explicar que rayos hace o significa algo, quiere decir que el codigo esta en formato criptico. EN VEZ de poner comentario, se debe:
- Si es un numero o caracter "magico" reemplazar por constante:
Código Delphi
[-]
a:=4 * 3
Por
a:=4 * FactorConversionImpuestoX
- Llamar las cosas por su nombre
Código Delphi
[-]
pkrc.Show;
Por
FormaClientes.Show;
- Si el codigo esta largo o complejo y no se entiende a) Reescribirlo hasta que se entienda o b) Trasladar la parte compleja a un metodo y llamarlo dentro del proceso normal, para que no estorbe la lectura del resto o c) Escribir en lenguaje natural lo que el codigo complejo hace, por ejemplo si es assembler