Yo no le veo sentido, ¿acaso este código no es el mismo?
Código Delphi
[-]
while true do
begin
CodEqMzVal := Geo.RetornaCodigoEqMzVal(QGeoVarios,temp,Ciudad);
if CodEqMzVal <> '' then
begin
CodEqMzValOk := CodEqMzVal;
CodMzNivOk := Geo.RetornaNivelYNomMzVal(QGeoVarios,CodEqMzValOk,Ciudad,NomMzVal);
NivelOk := Geo.RetornaNivelMzNiv(QGeoVarios,CodMzNivOk,Ciudad,NombreNivel,SiTabla);
iok := i;
end;
i := i+1;
if i < ListaPalabras.Count-1 then
temp := temp + ' ' + ListaPalabras[i];
else
break;
end;
igual el optimizador de delphi hace algo por el estilo.
Saludos