Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2018
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 18
cesarsoftware Va por buen camino
Cómo se declara y usa el tipo "Enumeration" en Delphi

Buenas foreros

Estoy buscando como definir tipos de datos ENUM en Delphi

Un ejemplo en C

Código:
enum FILETYPE_E {FILE_PRG = 0,FILE_TAB,FILE_PAN,	FILE_SYM,};
Un ejemplo en VB

Código:
Public Enum FILETYPE_E
        FILE_PRG = 0
        FILE_TAB
        FILE_PAN
        FILE_SYM
End Enum

If resul <> FILETYPE_E.FILE_PAN Then …….
¿Sabeis como se define (y accede) estos "enum" en nuestro querido Delphi?

Gracias de antemano
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.

Última edición por dec fecha: 21-11-2018 a las 15:34:20. Razón: Poner etiquetas CODE
Responder Con Cita
  #2  
Antiguo 21-11-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Puede revisar este artículo de Delphi Basics y también este apartado de la documentación de Embarcadero Delphi. Este sería un ejemplo con varios "tipos enumerados":

Código Delphi [-]
type
  TSound = (tsClick, tsClack, tsClock);
  TMyColor = (mcRed, mcBlue, mcGreen, mcYellow, mcOrange);
  Answer = (ansYes, ansNo, ansMaybe)

Arriba "TSound", "TMyColor", "Answer", son "enumeraciones". Así podría usarse una de ellas, por ejemplo:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  Sound: TSound;
begin
  Sound := TSound.tsClick;

  //

  if Sound = TSound.tsClick then
    ShowMessage('Sound is tsClick');

  //

end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-11-2018
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Enumerations in Delphi

En Delphi Basics: Enumerations, SubRanges and Sets

Edito: O lees lo que DEC ya te comentó
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #4  
Antiguo 21-11-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por movorack Ver Mensaje
Enumerations in Delphi

En Delphi Basics: Enumerations, SubRanges and Sets

Edito: O lees lo que DEC ya te comentó
¡Hey!

Pero no... no puede conformarse con lo que dec comentó... En efecto, se ve cómo declarar (pero no completamente) un tipo "enumeración", y, se ve cómo se puede asignar un determinado valor a una variable de dicho tipo, empero, hay más cosas por aprender, como posibles funciones útiles para los tipos "enumeración", etc.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 21-11-2018
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 18
cesarsoftware Va por buen camino
Gracias chicos, rápidos y concretos, defino....
Código Delphi [-]
type FILETYPE_E = (
    FILE_PRG = 0,
    FILE_TAB,
    FILE_PAN,
    FILE_SYM);
la función a usar es esta (definida por mi para acceder a la librería)
function OpenNET(name: string; var hPort: integer): FILETYPE_E; cdecl; stdcall; external 'NetCom.dll';
_
y el código
Código Delphi [-]
var
  resultado: FILETYPE_E;
begin
  resultado := OpenNET(ip_cnc, hPort);
  if resultado <> FILETYPE_E.FILE_PAN then
    Exit;
Un saludo
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.

Última edición por ecfisa fecha: 21-11-2018 a las 18:11:29. Razón: Agregar etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #6  
Antiguo 21-11-2018
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 18
cesarsoftware Va por buen camino
Holaaa, se puede pasar?

Siguiendo con la conversión y vuestra estimable ayuda....para convertir una definición de funcion

Basic
Código:
Public Declare Function ReadVar Lib "NETCOM" (ByVal hPort As Integer, ByVal variable As String, ByVal value As String) As Integer
C
Código PHP:
int __stdcall ReadVar(HPORT_T hPortcharvariablecharvalue); 
Delphi?
Código Delphi [-]
function ReadVar(hPort: integer; variable: string; var value: string): integer; cdecl; stdcall; external 'Netcom.dll';

No me da error, pero no me llega la variable, supongo que hay lio entre CHAR* y STRING

Una ayudita please

PD: hace tiempo que quiero "regalar" a la comunidad una utilidad (Delphi) para hacer PING a multiples destinos con thread, vamos, para hacer "un analizador de red", pero solose "pegar" código, si me echais otra mano os la paso, va muy bien y la uso mucho.


Gracias de antemano
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.

Última edición por ecfisa fecha: 21-11-2018 a las 18:12:19. Razón: Agregar etiquetas al código
Responder Con Cita
  #7  
Antiguo 21-11-2018
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 910
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
A ver intenta de esta manera...
Código Delphi [-]
function ReadVar(hPort: integer; variable: PAnsichar; value:PAnsichar): integer; stdcall; external 'Netcom.dll';
Código Delphi [-]
var
   lpVariable, lpValor:PAnsiChar;
   hPort, retval:Integer;
begin
     lpVariable   :='La_Variable'';
     lpValor:='';

     retval:=ReadVar(hPort, lpVariable, lpValor);

Saludos cordiales
Responder Con Cita
  #8  
Antiguo 21-11-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Un buen equivalente en Delphi a char * de C, es PChar.

Por favor no te olvides de usar etiquetas cuando incluyas código en tus mensajes:


(ya las agregué en tus mensajes)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 22-11-2018
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 18
cesarsoftware Va por buen camino
Gracias
Ya he probado, sigo igual pero quizá sea otro problema de la librería, voy a investigar
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.
Responder Con Cita
  #10  
Antiguo 26-11-2018
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 18
cesarsoftware Va por buen camino
Buenas foreros
Tema resuelto
para que la librería me devuelva el valor, ella lo define internamente como
Código:
 "char value[30];"
asi que en la definición de la función lo he pasado a un array dinamico de ansichar
Código Delphi [-]
function ReadVar(hPort: integer; variable: ansistring; var value: array of ansichar): DNCRESULT_E; cdecl; stdcall; external 'netcom.dll';

y para usarlo
Código Delphi [-]
var
  resultado: DNCRESULT_E;
  value: array[0..31] of ansichar;
begin
      resultado := ReadVar(hPort, variable[i], value);
      if resultado = DNCRESULT_E.DNC_SUCCESS then
         Lx.Caption := String(value);

end;

Gracias por vuestra colaboracion
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como hacer tunneling con delphi tipo zebedee? JXJ Varios 5 08-05-2012 19:44:02
¿Como se declara correctamente un constructor? flystar OOP 4 20-04-2010 21:12:37
¡El Profesor Fungus me declara la guerra! Ñuño Martínez La Taberna 11 09-07-2008 20:37:29
como puedo cambiar la fuente de Delphi - tipo de letra micky mouse Varios 6 07-03-2008 03:26:12
Microsoft declara que Vista tiene problemas muy serios Casimiro Notevi Noticias 16 30-01-2007 10:44:12


La franja horaria es GMT +2. Ahora son las 21:40:41.


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
Copyright 1996-2007 Club Delphi