Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2019
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
SSLOptions. Parámetros por string.

Hola Foro:

Quería saber si alguien sabe como puedo pasar el parámetro a SSLOpions desde un string.

por ejemplo:

Código Delphi [-]
    Method:=q_Correo.fieldByname('Method').asstring;
    SSLOptions.Method= fStrToAlgo(Method );                       // << Acá es donde hay que arreglar esto

Actualmente estoy haciendo como muestro más abajo, pero queda muy largo sobre todo porque son otros parámetros para UseTLS, Mode, etc.

Código Delphi [-]
    Method:=q_Correo.fieldByname('Method').asstring;

    if Method=  'sslvTLSv1' then begin
      SSLOptions.Method := sslvTLSv1  ;
    end else
    if Method =  'sslvSSLv2' then begin
      SSLOptions.Method := sslvSSLv2  ;
    end else
    if Method =  'sslvSSLv23' then begin
      SSLOptions.Method := sslvSSLv23 ;
    end else
    if Method =  'sslvSSLv3' then begin
      SSLOptions.Method := sslvSSLv3  ;
    end ;

Desde y agracias por su atención.
Responder Con Cita
  #2  
Antiguo 17-10-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.273
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Necesitas una clase que te convierta enumerados en strings y viceversa. Utilizando RTTI puedes hacerlo sin problemas.
Yo en mi caso utilizo esta:

Código Delphi [-]
  // classHelper para conversiones
  TEnumConverter = class
  public
    // Enumerado a entero
    class function EnumToInt(const EnumValue: T): Integer;
    // enumerado a string
    class function EnumToString(EnumValue: T): string;
    // class function StringToEnum(AValor:string):T;
    class procedure StringToEnum(strValue:String; var enValue:T);
  end;

Y la Implementacion:

Código Delphi [-]
//  obtener string como int (enum de un tipo)
class function TEnumConverter.EnumToInt(const EnumValue: T): Integer;
begin
  Result := 0;
  Move(EnumValue, Result, SizeOf(EnumValue));
end;

// Obtener enum como string
class function TEnumConverter.EnumToString(EnumValue: T): string;
begin
  Result := GetEnumName(TypeInfo(T), EnumToInt(EnumValue));
end;

// class function StringToEnum(AValor:string):T;
class procedure TEnumConverter.StringToEnum(strValue: String; var enValue:T);
var
  Tipo: PTypeInfo;
  Temp:Integer;
  PTemp: pointer;
begin
  Tipo := TypeInfo(T);
  Temp := GetEnumValue(Tipo, strValue);
  PTemp := @Temp;
  enValue := T(PTemp^);
end;

Añade las units: System.Rtti, System.TypInfo

Y la forma de utilizarlo sería algo así:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  alineacion:TAlign;
  i:Integer;
  str:string;
begin
  // enum a Cadena
  alineacion := TAlign.alBottom;
  ShowMessage('Alineacion como cadena: ' + TEnumConverter.EnumToString(TAlign(alineacion)));
  // enum a Integer
  i := TEnumConverter.EnumToInt(TAlign(alineacion));
  ShowMessage('Alineacion como entero: ' + IntToStr(i));
  // Cadena a enum
  str := 'alRight';
  TEnumConverter.StringToEnum(str, alineacion);
  Button1.Align := alineacion;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 17-10-2019 a las 10:09:06.
Responder Con Cita
  #3  
Antiguo 17-10-2019
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
hola

Aqui propongo otras alternativas valida para las versiones modernas de delphi, y es utilizar directamente las funciones de la RTTI

- Forma 1:
Código Delphi [-]
uses  System.Rtti;

/// ...

function MethodAsString(const Method: TIdSSLVersion): String;
begin
  Result := TRttiEnumerationType.GetName(Method);
end;

function StrToMethod(const MethodName: string):TIdSSLVersion;
begin
  result := TRttiEnumerationType.GetValue(MethodName);
end;

-Forma 2:
Código Delphi [-]
uses System.TypInfo;

function MethodAsString(const Method: TIdSSLVersion): String;
begin
  result := GetENumName(TypeInfo(TIdSSLVersion), Ord(Method));
end;

function StrToMethod(const MethodName: string):TIdSSLVersion;
var
  value:integer;
begin
  value := GetEnumValue(TypeInfo(TIdSSLVersion), MethodName);
  result := TIdSSLVersion(value);
end;


Y forma de utilizarlo:

Código Delphi [-]
var
  Method: string;
begin
  Method := q_Correo.fieldByname('Method').asstring;
  with IdSSLIOHandlerSocketOpenSSL1 do begin
    SSLOptions.Method := StrToMethod(Method);  
    // ...
    MessageDlg(format('seleccionado %s ', [MethodAsString(SSLOptions.Method)]), mtInformation, [mbOK], 0);
  end;
Responder Con Cita
Respuesta



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
Pasar parametros a string tonioaburto Trucos 1 12-07-2014 00:04:51
Parametros de Tipo String DasGrun OOP 3 19-03-2010 00:17:35
Select con parametros String delphijm SQL 7 18-04-2008 14:24:38
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 15:18:42
Uso de Const con parámetros String marcoszorrilla Trucos 0 29-06-2006 22:51:31


La franja horaria es GMT +2. Ahora son las 11:40:28.


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