lunes, junio 22, 2009

Cambiar el layout de teclado en Win XP

Una pagina con informacion interesante para cuando no tengamos instalado el layout correspondiente a nuestro teclado:

http://www.easydesksoftware.com/keyboard.htm

Etiquetas:

viernes, abril 03, 2009

Link a un planilla en particular en un Excel

La siguiente es la sintaxis a utilizar para linkear a una planilla en particular dentro de un archivo Excel determinado:

{PathToExcel}\{NombreArchivoExcel.xls}#'{NombrePlanilla}'!{RangoDeCeldas}

Donde lo importante es poner el nombre de la planilla entre comillas simples y especificar siempre un Rango de Celdas

Ejemplo:

C:\SubFolder1\SubFolder2\ExcelWB.xls#'1'!C4

Etiquetas:

lunes, febrero 16, 2009

DataSet a Excel

Codigo simple para pasar de un DataSet a un archivo excel.

using Office = Microsoft.Office.Core;
using Excel;

[...]

private static void DataSetToExcel(DataSet ds, Boolean generateIdentity)
{
Excel.Application xlApp = new Excel.Application();
xlApp.Visible = false;
Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
for (int k = 0; k <>
{
System.Data.DataTable dt = ds.Tables[k];
Worksheet ws = (Worksheet) wb.Worksheets.Add(Missing.Value,
Missing.Value, Missing.Value, Missing.Value);
ws.Name = dt.TableName;

for (int i = 0; i <>
{
for (int j = 0; j <>
{
if (i == 0)
ws.Cells[1, j + 1] = dt.Columns[j].ColumnName;

ws.Cells[i + 2, j + 1] = (j == 0 && generateIdentity) ?
(i + 1).ToString() : dt.Rows[i][j].ToString();
}
}
}
xlApp.Visible = true;

Se necesita una referencia a Microsoft Excel 11.0 Object Library
}

Etiquetas:

martes, febrero 10, 2009

Publicar un COM en la GAC

Para hacer visible un COM en la GAC es necesario primero crear un wapper signado para el COM en .NET
Para ello hay que crear la key:

c:\>sn -k thekey.snk

Y luego importar los tipos del COM dentro del wrapper:

c:\>tlbimp COM.dll /out:myAssembly.dll /keyfile:thekey.snk

Una vez generado el wrapper, solo hay que instalarlo en la GAC por gacutil o un MSI

Etiquetas: ,

miércoles, enero 07, 2009

Cron en JavaScript

Una interesante versión de cron implementada en JavaScript.

La nota completa aquí.

El archivo js fue enviado a la cuenta de correo de este blog con el nombre "Cron JavaScript"

Etiquetas:

lunes, noviembre 10, 2008

Referencia a dos versiones del mismo assembly

Eso mismo, explicado:

Crack (maybe dangerous ) you Visual Studio Project file with this :


<Reference Include="MyFirst, Version=2.0.0.0, Culture=neutral, PublicKeyToken=1c3ef21ab2e2f12e, processorArchitecture=MSIL">
<HintPath>..\Libs\2\MyFirst.dll</HintPath>
<Private>False</Private>
<Aliases>version2</Aliases>
</Reference>

<Reference Include="MyFirst, Version=3.0.0.0, Culture=neutral, PublicKeyToken=1c3ef21b2e2f12e, processorArchitecture=MSIL">
<HintPath>..\Libs\3\MyFirst.dll</HintPath>
<Private>False</Private>
<Aliases>version3</Aliases>
</Reference>


Insert this code in "using section"

extern alias version2;
extern alias version3;


Using versions assemblies

var v2 = new version2::Dto.MyDto();
var v3 = new version3::Dto.MyDto();

Etiquetas: ,

viernes, octubre 31, 2008

Patrón para IDisposable

El siguiente debería ser el patrón general a utilizar para implementar IDisposable:

1 public class DisposableClass : IDisposable
2 {
3 //Finalizador.
4 //Llamado por el GC al eliminar el objeto de memoria.
5 ~DisposableClass()
6 {
7 //Liberamos los recursos no manejados
8 Dispose(false);
9 }
10
11 //Llamado explicitamente por el desarrollador.
12 //bien usando using o invocandolo explicitamente.
13 public void Dispose()
14 {
15 //Llamamos a Dispose para liberar los recursos mantenidos por la clase
16 Dispose(true);
17 //Puesto que ya hemos realizado la liberación de recursos, no es
18 //necesario que el GC llame al finalizador
19 System.GC.SuppressFinalize(this);
20 }
21
22 //Esta función aglutina todo el proceso de liberación de recursos.
23 //Se invoca desde el finalizador pasando false, pues el finalizador solo
24 //debe liberar recursos no manejados.
25 //Se invoca desde el método Dispose pasando true pues queremos en ese caso
26 //liberar todos los recursos valisos agregados por el objeto, sena estos
27 //manejados o no.
28 protected virtual void Dispose(bool disposing)
29 {
30 if (disposing)
31 {
32 //Liberar aquí los objetos manejados agregados en esta clase
33 //que implementen IDisposable llamando explicitamente a su método Dispose.
34 }
35
36 //Liberar aquí todos los recursos no manejados.
37 }
38 }

Etiquetas: ,