delphi procedure

09/06/2004 - 00:04 por Oscar Galvis | Informe spam
tengo una dll con este par d procedimientos...

procedure _EncryptDB(pS: ShortString;var strResult:
ShortString);Stdcall;External 'commonr.dll';
procedure _DecryptDB(pS: ShortString;var strResult:
ShortString);Stdcall;External 'commonr.dll';

y necesito consumirlos desde c# ...



alguna Idea???
 

Leer las respuestas

#1 Octavio Hernandez
09/06/2004 - 00:51 | Informe spam
Oscar,

Interesante problema. En principio creo que sería algo así:

[DllImport("commonr.dll", CallingConvention=CallingConvention.StdCall)])]
void _EncryptDB(ShortString pS, ref ShortString strResult);

El problema es que hay que definirse un tipo ShortString en C# que se
corresponda con la arquitectura de las cadenas cortas de Pascal. Un
ShortString en Delphi es un array empaquetado de 256 bytes, donde el primero
contiene la longitud real de la cadena y los otros 255 - los posibles
caracteres (en Delphi no se usan caracteres de 2 bytes, sino de 1 solo). Yo
definiría una estructura (debería ser un tipo valor) y de paso le pondría
métodos para transformar de String a esa estructura y viceversa. Algo así:

[StructLayout(LayoutKind.Sequential, Pack=1)]
struct ShortString {
// *** datos
byte Longitud;
byte caracter000;
byte caracter001;
// etc.
byte caracter255;
// *** métodos
ShortString(String valorCS) { /* programar */ }
public override string ToString() { /* programar */ }
}

Salu2 - octavio

"Oscar Galvis" escribió en el mensaje
news:
tengo una dll con este par d procedimientos...

procedure _EncryptDB(pS: ShortString;var strResult:
ShortString);Stdcall;External 'commonr.dll';
procedure _DecryptDB(pS: ShortString;var strResult:
ShortString);Stdcall;External 'commonr.dll';

y necesito consumirlos desde c# ...



alguna Idea???


Preguntas similares