Por lo que entiendo:
- con BUSCARMODELO posicionas una tabla en un registro
- con ENCONTROMODELO haces algo con los datos de ese registro.
Supongo que la solución sería que BUSCARMODELO te devolviera los datos que vas a uar en ENCONTROMODELO y se los pasaras.
(n, grupo y modelo deberán ser variable globales al thread)
Quizás también agregaría un tGrupo.Close después de la consulta en BUSCARMODELO, si no es necesario que quede abierto.
Código Delphi
[-]
procedure Tform1.procesar(s:String;n:Integer);
Begin
if (self.procesando_list.CountThen
Begin
if (objeto<>'') Then
Begin
self.procesando_list.Items.Add(s);
buscarModelo(s, n, grupo, modelo);
End;
End;
End;
procedure Tform1.buscarModelo(s:String; var n, grupo, modelo : integer);
var
i:Integer;
coma,servicios_dato,dato:String;
servicios: TBFBluetoothServices;
servicio: TBFBluetoothService;
prefijo: String;
Begin
servicios := EnumServices(s,true,Dongle);
servicios_dato := '';
coma := '';
for i:=0 to servicios.Count - 1 do
Begin
servicio := servicios.Service[i];
dato := coma + inttostr(i) + ':' + inttostr(servicio.Channel) + ':' + inttostr(servicio.UUID16);
servicios_dato := servicios_dato + dato;
coma := ',';
End;
prefijo := stringReplace(s,':','',[rfReplaceAll]);
prefijo := copy(prefijo,2,6);
d2.tgrupo.Close;
d2.tgrupo.SQL.Clear;
d2.tgrupo.SQL.Add('SELECT modelos.id, modelos.marca, modelos.modelo, agrupar.grupo');
d2.tgrupo.SQL.Add('FROM modelos');
d2.tgrupo.SQL.Add('INNER JOIN agrupar ON (modelos.id = agrupar.modelo)');
d2.tgrupo.SQL.Add('WHERE (modelos.prefijo = ' + '''' + prefijo + '''' + ')');
d2.tgrupo.SQL.Add('AND (modelos.servicios = ' + '''' + servicios_dato + '''' + ')');
d2.tgrupo.Open;
n := datos.RecordCount;
grupo := datos.fieldByName('grupo').Value;
modelo := datos.fieldByName('id').Value;
tGrupo.Close
End;
procedure Tform1.encontroModelo(datos:TDataSet; n, grupo, modelo : integer);
var
objeto2:String;
p1,largo,n, grupo, modelo, il:Integer;
s,busca:String;
Begin
n := datos.RecordCount;}
if (n>0) Then
Begin
grupo := datos.fieldByName('grupo').Value;
modelo := datos.fieldByName('id').Value;
}
End
else
Begin
grupo := 0;
modelo := 0;
End;
busca := inttostr(grupo) + ',';
il := BuscarEnLista(lista_objetos.Items,busca);
objeto2 := lista_objetos.Items.Strings[il];
largo := length(objeto2);
p1 := pos(',',objeto2);
objeto2 := copy(objeto2,p1+1,largo - p1);
enviar(ACALADIRECCION,self.c_config.Items.Strings[1] + 'objetos\' + objeto2)
end;
procedure Td2.tgrupoAfterOpen(DataSet: TDataSet);
begin
form1.encontroModelo(DataSet, n, grupo, modelo);
end;