Consejos al acceder al estado de una tabla
Saludos a todos, me gustaría pedir consejo sobre cuál es la mejor forma de hacer lo siguiente:
if (table1.state in [dsinsert,dsedit] then begin btaceptar.enabled:= true; btcancelar.enabled := true; bteliminar.enabled := true; ...... ..... ...... end else begin btaceptar.enabled:= false; btcancelar.enabled := false; bteliminar.enabled := false; ...... ..... ...... end; o bien de esta forma: btaceptar.enabled := table1.state in [dsinsert,dsedit]; btcancelar.enabled := table1.state in [dsinsert,dsedit]; bteliminar.enabled := table1.state in [dsinsert,dsedit]; ...... ...... ....... De la primera forma solo accedo una vez al estado de la tabla y escribo más código. De la segunda forma escribo menos código pero accedo una vez por cada componente que quiero ajustar, pero la duda es ¿el acceder al estado de la tabla es costoso o más bien rápido? Gracias a todos por vuestra ayuda. |
Hola:
El acceder al estado de una tabla es algo rapidísimo, en realidad no se ejecuta ningún código interno al acceder a esa propiedad sino que se mira directamente la variable FState, así que puedes quedarte con la segunda opción, la primera crea código innecesario. Una tercera vía sería: btaceptar.enabled := table1.state in [dsinsert,dsedit]; btcancelar.enabled := btaceptar.enabled; bteliminar.enabled := btaceptar.enabled; que evita la comprobación del in 2 veces. La diferencia que cuenta aquí es de legibilidad y economía del código. |
Muchas gracias, me imagina algo así pero quería que alguién lo confirmara, saludos.
|
El coste, en ambos casos es lineal, por lo que cualquiera de ambas soluciones es igualmente buena.
Deberias preocuparte en el caso en que el coste fuese exponencial. Cuando el coste es lineal, ya que el tiempo de acceso para cualquier componente es muy rápido, se considera el tmp minimo necesario, por lo que es igualmente bueno cualquiera de ambas como te digo. Suerte. |
Código:
procedure TForm1.Button1Click(Sender: TObject); |
La franja horaria es GMT +2. Ahora son las 18:16:58. |
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