lunes, 13 de diciembre de 2010

SqlServerCe no insert desde c#

Si tenes problemas insertando datos o que los datos se insertan, pero al cerrar la conexion no se salvan, podes solucionarlo poniendo en la conexion a la base un path absoluto.No es la mejor solucion, pero funciona.

martes, 28 de septiembre de 2010

Enviar mails de forma simple con .net

Es necesario poner el namepace
using System.Net.Mail;


Luego es muy simple la manera de enviar el correo:

MailMessage mm = new MailMessage(direccionDesde, destinatario);
mm.Subject = motivo;
mm.Body = cuerpoMail;
mm.IsBodyHtml = false;
SmtpClient smtp=new SmtpClient();
smtp.Send(mm);

viernes, 6 de agosto de 2010

Para poder cambiar el tamaño de la imagen, primero creo una nueva al tamaño al que queremos hacerlo (en este caso 100 pixels por 100 pixels), luego creando el objeto Graphics a partir de la imagen anterior, y "escribiendo" a la imagen nueva la imagen resizeada.

Bitmap imagenNueva = new Bitmap( 100, 100 );
using( Graphics g = Graphics.FromImage( (Image) imagenVieja ) )
g.DrawImage( imagenNueva, 0, 0, 100, 100 );

martes, 3 de agosto de 2010

Detectar emails con Expresiones regulares en C#

La forma de detectar varios emails con expresiones regulares es una tarea facil, una vez que se sabe que patron usar.
Una vez corrido el proceso, se generan los terminos encontrados, que pueden ser recorridos uno por uno con un for each.

List output = new List();
string pattern = @"(([^<>()[\]\\.,;:\s@\""]+"
+ @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
+ @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
+ @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
+ @"[a-zA-Z]{2,}))";

Regex emailregex = new Regex(pattern);
MatchCollection matches = emailregex.Matches(source);
foreach (Match item in matches)
{
if (item.Success)
{
if(!output.Contains(item.Value.ToLower()))
output.Add(item.Value.ToLower());
}
}

viernes, 11 de junio de 2010

Crear Objetos dinamicamente

Hay dos formas de crear de forma dinámica un objeto "on the fly".
Estas formas de implementar patterns de "factory" usan siempre reflection de .net.
Incluir:
using System.Reflection;

Lo esencial quizas es que todos los objetos que creemos tengan una clase Base comun, para poder asignarselos y luego poder castearlos a la clase que queremos.

Type tipoObjeto = typeof(ClaseaInstanciar)
ClaseBase c = (ClaseBase)Assembly.GetExecutingAssembly().CreateInstance(tipoObjeto.FullName);

Otra forma es (aparentemente mas lenta):
string strClase = "NombreDeClaseACrear";
Type tipoClase = Type.GetType(strClase);
ClaseBase c = (ClaseBase) t.InvokeMember("ctor", BindingFlags.CreateInstance, null, null, null);


---------------------------------------

Ejemplo Concreto:

class Persona
{
string nombre="";
}
class Trabajador : Persona
{
string IDTrabajador = "";
}


private void llamada()
{
Type tipoObjeto = typeof(Trabajador);
Persona c = (Persona)Assembly.GetExecutingAssembly().CreateInstance(tipoObjeto.FullName);
}


viernes, 4 de junio de 2010

Obtener la tangente en grados en .net

El angulo que devuelven las funciones trigonometricas de .net es en radianes, por lo cual hay que transformar esto a grados si es eso lo que se desea.
La forma es asi:

double phi = 0; //angulo en radianes;
phi = Math.Atan2(y , x);
angulo = phi * (180.0 / Math.PI);

viernes, 14 de mayo de 2010

Borrar multiples archivos en c#

Para borrar muchos archivos con el uso de comodines (por ejemplo *) se debe seleccionar primero en ese directorio todos los que cumplan con esa condición y luego recorrerlos borrándolos uno por uno.
No existen comodines en el metodo Delete para borrar archivos.

dim path as string ="C:\"
For Each archivo As String In Directory.GetFiles(path, "out*.tmp")
File.Delete(archivo)
Next