Ver la Versión Completa : Cómo se declara y usa el tipo "Enumeration" en Delphi
cesarsoftware
21-11-2018, 14:07:31
Buenas foreros
Estoy buscando como definir tipos de datos ENUM en Delphi
Un ejemplo en C
enum FILETYPE_E {FILE_PRG = 0,FILE_TAB,FILE_PAN, FILE_SYM,};
Un ejemplo en VB
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
Hola a todos,
Puede revisar este artículo de Delphi Basics (http://www.delphibasics.co.uk/Article.asp?Name=Sets) y también este apartado de la documentación de Embarcadero Delphi (http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Simple_Types_(Delphi)#Enumerated_Types). Este sería un ejemplo con varios "tipos enumerados":
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:
procedure TForm1.FormCreate(Sender: TObject);
var
Sound: TSound;
begin
Sound := TSound.tsClick;
//
if Sound = TSound.tsClick then
ShowMessage('Sound is tsClick');
//
end;
movorack
21-11-2018, 14:35:30
Enumerations in Delphi (http://bfy.tw/KyFm)
En Delphi Basics: Enumerations, SubRanges and Sets (http://www.delphibasics.co.uk/Article.asp?Name=Sets)
Edito: O lees lo que DEC ya te comentó :D
Enumerations in Delphi (http://bfy.tw/KyFm)
En Delphi Basics: Enumerations, SubRanges and Sets (http://www.delphibasics.co.uk/Article.asp?Name=Sets)
Edito: O lees lo que DEC ya te comentó :D
¡Hey! :D :D
Pero no... no puede conformarse con lo que dec comentó... :D 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.
cesarsoftware
21-11-2018, 15:32:05
Gracias chicos, rápidos y concretos, defino....
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
var
resultado: FILETYPE_E;
begin
resultado := OpenNET(ip_cnc, hPort);
if resultado <> FILETYPE_E.FILE_PAN then
Exit;
Un saludo
cesarsoftware
21-11-2018, 16:33:00
Holaaa, se puede pasar?
Siguiendo con la conversión y vuestra estimable ayuda....para convertir una definición de funcion
Basic
Public Declare Function ReadVar Lib "NETCOM" (ByVal hPort As Integer, ByVal variable As String, ByVal value As String) As Integer
C
int __stdcall ReadVar(HPORT_T hPort, char* variable, char* value);
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
cloayza
21-11-2018, 17:29:46
A ver intenta de esta manera...
function ReadVar(hPort: integer; variable: PAnsichar; value:PAnsichar): integer; stdcall; external 'Netcom.dll';
var
lpVariable, lpValor:PAnsiChar;
hPort, retval:Integer;
begin
lpVariable :='La_Variable'';
lpValor:='';
retval:=ReadVar(hPort, lpVariable, lpValor);
Saludos cordiales
ecfisa
21-11-2018, 17:32:30
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:
https://s9.postimg.cc/v9fxo14hb/TAGs.jpg
(ya las agregué en tus mensajes)
Saludos :)
cesarsoftware
22-11-2018, 10:08:14
Gracias
Ya he probado, sigo igual pero quizá sea otro problema de la librería, voy a investigar
cesarsoftware
26-11-2018, 13:19:00
Buenas foreros
Tema resuelto
para que la librería me devuelva el valor, ella lo define internamente como "char value[30];"
asi que en la definición de la función lo he pasado a un array dinamico de ansichar
function ReadVar(hPort: integer; variable: ansistring; var value: array of ansichar): DNCRESULT_E; cdecl; stdcall; external 'netcom.dll';
y para usarlo
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.