Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Que quiere decir set of (ver código) (https://www.clubdelphi.com/foros/showthread.php?t=43509)

David 13-05-2007 17:32:47

Que quiere decir set of (ver código)
 
Hola

La pregunta es que significa un código como el que pongo , TState , que seria ? Un array , una definición de elementos ¿Cómo se le llama a eso en delphi?

Y por otra parte la segunda sentencia set of , que quiere decir . No lo encuentro en la ayuda de delphi y he visto un código similar al que he puesto , y no llego a entenderlo.

Código Delphi [-]
type
TState= (Teditar,Tinsertar, Tborrrar, Tver);
TStates= set of TState;

Un saludo

seoane 13-05-2007 17:46:00

Cita:

Empezado por David
No lo encuentro en la ayuda de delphi

:confused: ¿Probaste buscando "sets" en la ayuda?

En el código que tu pones, TStates es un conjunto de valores del tipo TState. A su vez, TState es un tipo "enumerado" (busca en la ayuda "enumerated types")

Por ejemplo:
Código Delphi [-]
var
  States: TStates;
begin
  // Aqui le asignamos a States un conjunto vacio
  States:= [];
  // Aqui le asignamos dos valores
  States:= [Teditar,Tinsertar];
  // Aqui le quitamos uno
  States:= [Teditar,Tinsertar] - [TInsertar];
  // Aqui comprobamos si un valor esta dentro del conjunto
  if TInsertar in [States] then
  begin

  end;
end;

dec 13-05-2007 18:12:42

Hola,

Creo que ayudaría también escribir de otra forma. Es decir, esto:

Código Delphi [-]
type
  TState = (Teditar, Tinsertar, Tborrrar, Tver);
  TStates = set of TState;

Suele escribirse así:

Código Delphi [-]
type
  TState = (sEditar, sInsertar, sBorrrar, sVer);
  TStates = set of TState;

Es decir, limitamos las "T" para los tipos, propiamente dichos. Los elementos del conjunto del tipo "TState", en este caso, se inician en minúsculas con la primera letra del tipo en cuestión.

Código Delphi [-]
type
  TCityState = (ceEditar, ceInsertar, ceBorrrar, ceVer);
  TCityStates = set of TState;

En este caso cada elemento del conjunto comenzaría con las dos primeras letras de cada palabra contenida en el nombre del tipo "TCityState". No es que quiera talibanizar al respecto, pero, definitivamente algo así sería cuando menos confuso para mí:

Código Delphi [-]
type
  TState = (Teditar, Tinsertar, Tborrrar, Tver);
  TStates = set of TState;

¿Cómo saber si "Teditar" es un tipo de clase (por ejemplo...) o un elemento de un conjunto del tipo "TState"? Tal como está arriba ya es algo confuso, aunque todavía queda medio claro, pero, utilizando estos identificadores entre el código fuente que sea menester... aún se complicaría más su significado.

Lepe 14-05-2007 04:19:44

Cita:

Empezado por dec
Código Delphi [-]
type
  TCityState = (ceEditar, ceInsertar, ceBorrrar, ceVer);
  TCityStates = set of TState;

En este caso cada elemento del conjunto comenzaría con las dos primeras letras de cada palabra contenida en el nombre del tipo "TCityState".

ajá, ok, entendido, queda clarísimo :D :D

Saludetes.

dec 14-05-2007 04:27:49

Hola,

¿Qué tienes en contra? ¿eh? ¿eh? ¿eh? :)

No he hecho sino seguir el estilo de la VCL. Algunos ejemplos, aunque que es verdad que no siempre se cumple lo que digo:

Código Delphi [-]
  TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly,
    poScreenCenter, poDesktopCenter, poMainFormCenter, poOwnerFormCenter);

Ahí no se cumple, porque se usa "po" y según yo se ha de usar "p...", pero, en fin, valga "po" que incluso queda más claro, y, desde luego, en cualquier caso más claro que:

Código Delphi [-]
  TPosition = (TDesigned, TDefault, TDefaultPosOnly, TDefaultSizeOnly,
    TScreenCenter, TDesktopCenter, TMainFormCenter, TOwnerFormCenter);

Pero en otros casos se cumple lo que digo: :)

Código Delphi [-]
  TCloseAction = (caNone, caHide, caFree, caMinimize);

  TShowAction = (saIgnore, saRestore, saMinimize, saMaximize);

  TDefaultMonitor = (dmDesktop, dmPrimary, dmMainForm, dmActiveForm);

  TFormState = set of (fsCreating, fsVisible, fsShowing, fsModal, fsCreatedMDIChild, fsActivated);

PD. Otra cosa es que me explicara con el (_._), como diría Julián. :D

:D :D :D

roman 14-05-2007 07:54:43

Estimado dec, veo que el tamaño de letra usado por Lepe, no fue suficiente :D. Él no se refería a la convención que citas- con la que muy posiblemente esté de acuerdo -si no a que no la estás cumpliendo tú mismo en tu ejemplo:

Código Delphi [-]
TCityState = (ceEditar, ceInsertar, ceBorrrar, ceVer);

O sea:

Código Delphi [-]
TCityState = (cSEditar, cSInsertar, cSBorrrar, cSVer);

:D

// Saludos

dec 14-05-2007 07:56:24

Hola,

Jo, jo, jo... y eso que lo miré una y otra vez... Este Lepe es un cachondo. ¡Como que es de Lepe! Je, je, je, je. :D


La franja horaria es GMT +2. Ahora son las 21:05:43.

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