Principales respuestas
Cambiar mi función Encripta hecha en VB y pasarlo a C#

Pregunta
-
Saludos amigos del foro, les traigo un inconveniente, en este caso estoy tratando de cambiar mi función Encripta hecha en VB y al pasarlo a C# tengo problemas con "Len, UCase, Asc y Mid" me podran ayudar porfavor.
public string Encripta(string lcEncrypt, string lcstring, string lcClave)
{
int lnlen, lnlencript, maxca, c;
string lcnewstring, retval, lcchar;
lnlencript = len(lcEncrypt.Trim);
if (UCase(lcEncrypt) != "ONN" && UCase(lcEncrypt) != "OFF" && lnlencript > 3) ;
{
MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return "";
}
retval = "";
maxca = 100;
c = 1;
if (lcEncrypt == "ONN")
{
lnlen = Len(lcstring.Trim);
lcnewstring = "";
for (int j = 1; j == lnlen; j++)
{
lcchar = ((Asc(Mid(lcstring, j, 1)) + Asc(Mid(lcClave, c, 1))) % 256).ToString;
lcnewstring = (lcnewstring + Convert.ToChar(Convert.ToInt32(lcchar)));
c = (c + 1);
if (c >= Len(lcClave))
{
c = 1;
}
}
retval = lcnewstring;
}
if (lcEncrypt == "OFF")
{
lnlen = Len(lcstring.Trim);
lcnewstring = "";
for (int j = 1; j == lnlen; j++)
{
lcchar = (((256 + Asc(Mid(lcstring, j, 1))) - Asc(Mid(lcClave, c, 1))) % 256).ToString;
c = (c + 1);
if (c >= Len(lcClave))
{
c = 1;
}
lcnewstring = (lcnewstring + Convert.ToChar(Convert.ToInt32(lcchar)));
}
retval = lcnewstring;
}
return retval;
}
Respuestas
-
Buenas
Para acceder a los metodos de string que te ha comentado Sergio, tienes que tener
using System;
Los cambios que te propone, son por ejemplo
if (c >= Len(lcClave)) //Por if (c >= lcClave.Lenght)
Comentanos si tienes dudas
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Propuesto como respuesta Alberto PoblacionMVP martes, 12 de diciembre de 2017 12:11
- Marcado como respuesta Rudolf Heiner martes, 12 de diciembre de 2017 20:10
-
Eso es.
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Rudolf Heiner martes, 12 de diciembre de 2017 20:10
-
Buenas,
Con el cambio que has hecho, no has corregido el error, sigues sin respetar el tipado de los datos
Prueba asi:
public static string Encripta(string lcEncrypt, string lcstring, string lcClave) { int lnlen, lnlencript, c; string lcnewstring, retval; string lcchar; lcEncrypt = lcEncrypt.ToUpper(); lcstring = lcstring.Trim(); lnlencript = (lcEncrypt.Length); if (lcEncrypt != "ONN" && lcEncrypt != "OFF" && lnlencript > 3) { MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); return ""; } retval = ""; c = 1; if (lcEncrypt == "ONN") { lnlen = (lcstring.Length); lcnewstring = ""; for (int j = 1; j == lnlen; j++) { lcchar = (((int)Convert.ToChar(lcstring.Substring(j, 1)) + (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256).ToString(); lcnewstring = (lcnewstring + lcchar); c = (c + 1); if (c >= lcClave.Length) { c = 1; } } retval = lcnewstring; } if (lcEncrypt == "OFF") { lnlen = (lcstring.Length); lcnewstring = ""; for (int j = 1; j == lnlen; j++) { lcchar = (((256 + (int)Convert.ToChar(lcstring.Substring(j, 1)) - (int)Convert.ToChar(lcClave.Substring(c, 1)))) % 256).ToString(); if (c >= lcClave.Length) { c = 1; } lcnewstring = (lcnewstring + lcchar); } retval = lcnewstring; } return retval; }
Nos comentas
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Marcado como respuesta Rudolf Heiner martes, 12 de diciembre de 2017 23:42
-
Ya esta funcionando al 100 por ciento la Función, se los dejo para que si alguien lo necesita lo utilice:
public static string Encripta(string lcEncrypt, string lcstring, string lcClave)
{
int lnlen, lnlencript, c;
string lcnewstring, retval, lcchar;
lcEncrypt = lcEncrypt.ToUpper();
lnlencript = (lcEncrypt.Length);
if (lcEncrypt != "ONN" && lcEncrypt != "OFF" && lnlencript > 3)
{
MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return "";
}
retval = "";
c = 0;
if (lcEncrypt == "ONN")
{
lnlen = lcstring.Length - 1;
lcnewstring = "";
for (int j = 0; j <= lnlen; j++)
{
lcchar = Convert.ToChar(((int)Convert.ToChar(lcstring.Substring(j, 1)) + (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256).ToString();
lcnewstring = lcnewstring + lcchar;
c++;
if (c >= lcClave.Length)
{
c = 0;
}
}
retval = lcnewstring;
}
c = 0;
if (lcEncrypt == "OFF")
{
lnlen = lcstring.Length - 1;
lcnewstring = "";
for (int j = 0; j <= lnlen; j++)
{
lcchar = Convert.ToChar((256 + (int)Convert.ToChar(lcstring.Substring(j, 1)) - (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256).ToString();
c++;
if (c >= lcClave.Length)
{
c = 0;
}
lcnewstring = lcnewstring + lcchar;
}
retval = lcnewstring;
}
return retval;
}
- Marcado como respuesta Rudolf Heiner miércoles, 13 de diciembre de 2017 2:05
Todas las respuestas
-
Hola. Lo primero es comentarte que esas funciones que indicas son de VB.
Len() se puede traducir como Propiedad String.Length
UCase() se puede traducir como Método String.ToUpper
Mid() se puede traducir como Método String.Substring
Asc() es una conversión de un char a un int
char c = 's'; int asc = (int)c;
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Propuesto como respuesta Jorge TurradoMVP martes, 12 de diciembre de 2017 8:01
-
También puedes tener esas funciones disponibles si importas el espacio de nombres
Microsoft.VisualBasic (en Microsoft.VisualBasic.dll
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Propuesto como respuesta Jorge TurradoMVP martes, 12 de diciembre de 2017 8:01
-
-
-
-
Buenas
Para acceder a los metodos de string que te ha comentado Sergio, tienes que tener
using System;
Los cambios que te propone, son por ejemplo
if (c >= Len(lcClave)) //Por if (c >= lcClave.Lenght)
Comentanos si tienes dudas
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Propuesto como respuesta Alberto PoblacionMVP martes, 12 de diciembre de 2017 12:11
- Marcado como respuesta Rudolf Heiner martes, 12 de diciembre de 2017 20:10
-
Eso es.
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Rudolf Heiner martes, 12 de diciembre de 2017 20:10
-
Gracias Jorge y Sergio por responder, hasta el momento he logrado cambiar como debe de ser en C# pero me falta el Asc, les muestro la funcion y lo que esta con negrilla como lo puedo hacer, quedo de ustedes,
saludos.
//Funcion que encripta un valor
public string Encripta(string lcEncrypt, string lcstring, string lcClave)
{
int lnlen, lnlencript, maxca, c;
string lcnewstring, retval, lcchar;
lcEncrypt = lcEncrypt.ToUpper();
lcstring = lcstring.Trim();
lnlencript = (lcEncrypt.Length);
if (lcEncrypt != "ONN" && lcEncrypt != "OFF" && lnlencript > 3)
{
MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return "";
}
retval = "";
maxca = 100;
c = 1;
if (lcEncrypt == "ONN")
{
lnlen = (lcstring.Length);
lcnewstring = "";
for (int j = 1; j == lnlen; j++)
{
lcchar = ((Asc(lcstring.Substring(j,1)) + Asc(lcClave.Substring(c,1))) % 256).ToString;
lcnewstring = (lcnewstring + Convert.ToChar(Convert.ToInt32(lcchar)));
c = (c + 1);
if (c >= lcClave.Length)
{
c = 1;
}
}
retval = lcnewstring;
}
if (lcEncrypt == "OFF")
{
lnlen = (lcstring.Length);
lcnewstring = "";
for (int j = 1; j == lnlen; j++)
{
lcchar = (((256 + Asc(lcstring.Substring(j,1)) - Asc(lcClave.Substring(c,1)))) % 256).ToString;
if (c >= lcClave.Length)
{
c = 1;
}
lcnewstring = (lcnewstring + Convert.ToChar(Convert.ToInt32(lcchar)));
}
retval = lcnewstring;
}
return retval;
}
-
Hola Rudolf Heiner
Para que las soluciones brindadas por los colaboradores del foro puedan ser útiles para el resto del la comunidad, favor de marcarlas.
Quedamos al pendiente de cualquier actualización de tu parte.
Saludos Cordiales.
Gracias por usar los foros de MSDN.
Pablo Rubio
_____Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
-
Hola. En una respuesta mía anterior te comenté cómo hacer Asc() desde C#.
En tu caso sería
(int)Convert.ToChar(lcstring.Substring(j,1))
Conviertes a char el carácter y a su vez lo conviertes a int
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
-
-
Claro,
te da fallo porque estas definiendo lcchar como string, y luego quieres meter un int, en c# el tipado es más fuerte que en VB, y hay que tenerlo en cuenta
string lcnewstring, retval, lcchar;
Si lo que quieres es que se almacene como string, tienes que poner ToString() al final.
Si lo que quieres es que sea un int, tienes que definir lo como int.
Viendo un poco tu codigo, creo que lo que quieres es almacenar el numero como string para después concatenarlo, asi que prueba añadiendo .ToString() detras del ultimo parentesis de cada linea con fallo.
Nos comentas el resultado
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
public static string Encripta(string lcEncrypt, string lcstring, string lcClave)
{
int lnlen, lnlencript, c;
string lcnewstring, retval;
char lcchar;
lcEncrypt = lcEncrypt.ToUpper();
lcstring = lcstring.Trim();
lnlencript = (lcEncrypt.Length);
if (lcEncrypt != "ONN" && lcEncrypt != "OFF" && lnlencript > 3)
{
MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return "";
}
retval = "";
c = 1;
if (lcEncrypt == "ONN")
{
lnlen = (lcstring.Length);
lcnewstring = "";
for (int j = 1; j == lnlen; j++)
{
lcchar = (((int)Convert.ToChar(lcstring.Substring(j, 1)) + (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256);
lcnewstring = (lcnewstring + lcchar);
c = (c + 1);
if (c >= lcClave.Length)
{
c = 1;
}
}
retval = lcnewstring;
}
if (lcEncrypt == "OFF")
{
lnlen = (lcstring.Length);
lcnewstring = "";
for (int j = 1; j == lnlen; j++)
{
lcchar = (((256 + (int)Convert.ToChar(lcstring.Substring(j, 1)) - (int)Convert.ToChar(lcClave.Substring(c, 1)))) % 256);
if (c >= lcClave.Length)
{
c = 1;
}
lcnewstring = (lcnewstring + lcchar);
}
retval = lcnewstring;
}
return retval;
}
-
Buenas,
Con el cambio que has hecho, no has corregido el error, sigues sin respetar el tipado de los datos
Prueba asi:
public static string Encripta(string lcEncrypt, string lcstring, string lcClave) { int lnlen, lnlencript, c; string lcnewstring, retval; string lcchar; lcEncrypt = lcEncrypt.ToUpper(); lcstring = lcstring.Trim(); lnlencript = (lcEncrypt.Length); if (lcEncrypt != "ONN" && lcEncrypt != "OFF" && lnlencript > 3) { MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); return ""; } retval = ""; c = 1; if (lcEncrypt == "ONN") { lnlen = (lcstring.Length); lcnewstring = ""; for (int j = 1; j == lnlen; j++) { lcchar = (((int)Convert.ToChar(lcstring.Substring(j, 1)) + (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256).ToString(); lcnewstring = (lcnewstring + lcchar); c = (c + 1); if (c >= lcClave.Length) { c = 1; } } retval = lcnewstring; } if (lcEncrypt == "OFF") { lnlen = (lcstring.Length); lcnewstring = ""; for (int j = 1; j == lnlen; j++) { lcchar = (((256 + (int)Convert.ToChar(lcstring.Substring(j, 1)) - (int)Convert.ToChar(lcClave.Substring(c, 1)))) % 256).ToString(); if (c >= lcClave.Length) { c = 1; } lcnewstring = (lcnewstring + lcchar); } retval = lcnewstring; } return retval; }
Nos comentas
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Marcado como respuesta Rudolf Heiner martes, 12 de diciembre de 2017 23:42
-
Ya esta funcionando al 100 por ciento la Función, se los dejo para que si alguien lo necesita lo utilice:
public static string Encripta(string lcEncrypt, string lcstring, string lcClave)
{
int lnlen, lnlencript, c;
string lcnewstring, retval, lcchar;
lcEncrypt = lcEncrypt.ToUpper();
lnlencript = (lcEncrypt.Length);
if (lcEncrypt != "ONN" && lcEncrypt != "OFF" && lnlencript > 3)
{
MessageBox.Show("Metodo de Encriptación Invalida", "Encripta", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return "";
}
retval = "";
c = 0;
if (lcEncrypt == "ONN")
{
lnlen = lcstring.Length - 1;
lcnewstring = "";
for (int j = 0; j <= lnlen; j++)
{
lcchar = Convert.ToChar(((int)Convert.ToChar(lcstring.Substring(j, 1)) + (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256).ToString();
lcnewstring = lcnewstring + lcchar;
c++;
if (c >= lcClave.Length)
{
c = 0;
}
}
retval = lcnewstring;
}
c = 0;
if (lcEncrypt == "OFF")
{
lnlen = lcstring.Length - 1;
lcnewstring = "";
for (int j = 0; j <= lnlen; j++)
{
lcchar = Convert.ToChar((256 + (int)Convert.ToChar(lcstring.Substring(j, 1)) - (int)Convert.ToChar(lcClave.Substring(c, 1))) % 256).ToString();
c++;
if (c >= lcClave.Length)
{
c = 0;
}
lcnewstring = lcnewstring + lcchar;
}
retval = lcnewstring;
}
return retval;
}
- Marcado como respuesta Rudolf Heiner miércoles, 13 de diciembre de 2017 2:05