Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2012
Blade_Is_One Blade_Is_One is offline
Registrado
 
Registrado: nov 2006
Posts: 3
Poder: 0
Blade_Is_One Va por buen camino
Exclamation Alguien que me ayude a transformar este fuente CSharp en una DLL

Alguien qu eme ayude a trasnsformar este fuente de CSharp en una dll, ya que se me a echo un lio homologarla en delphi, asi si la logro transformar en dll compilando en CSharp la puedo llamar desde delphi.

se los agradeceria mucho a los que sean expertos en CSharp.

gracias de antemano..

Código PHP:
public static class VoiceCode
{
    public static 
string Compute(string GTINstring lotDateTimepackDate)
    {
        
ushort crc =  Crc16.ComputeChecksum(Encoding.ASCII.GetBytes(string.Format("{0}{1}{2}",  GTINlotpackDate.HasValue packDate.Value.ToString("yyMMdd") :
        
string.Empty))); return string.Format("{0:0000}"crc 10000);
    }
}


public static class 
Crc16 #region static members
    
private const ushort polynomial 0xA001; private static ushort[] table = new ushort[256]; static Crc16()
    {
        
ushort valueushort temp;
        for (
ushort i 0table.Length; ++i) {
            
value 0;
            
temp i; for (byte j 08; ++j) {
            if (
!= ((value temp) & 0x0001)) {
                
value = (ushort)((value >> 1) ^ polynomial);
            }     else {
                          
value >>= 1; } temp >>= 1;
                       }
            
table[i] = value;
        }
    } 
#endregion

    
public static ushort ComputeChecksum(byte[] bytes) { ushort crc 0;
         for (
int i 0bytes.Length; ++i) {
             
byte index = (byte)(crc bytes[i]);
             
crc = (ushort)((crc >> 8) ^ table[index]);
         } return 
crc;
    }

Responder Con Cita
  #2  
Antiguo 26-12-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Para volverlo una DLL es solo cuestion de configurar el proyecto que genere un ensamblado de .NET. Tu problema va a ser como llamar esa DLL desde delphi, que es codigo nativo. Es posible, pero una vuelta larga para un codigo tan corto. Ademas no tiene nada que dependa si o si de correr en .NET y me parece que portarlo es mejor.

Cuando te enfrentes a estas cosas, lo que debes hacer es concentrarte en que problema tienes, no en el codigo concreto. Que es lo que hace? Como se llama el algoritmo usado? y entonces buscas una implementacion en Delphi que logre lo mismo.

Hay algo con .NET util y es que se puede desesamblar un codigo en .NET y verlo en multiples lenguajes, usando http://stackoverflow.com/questions/5...ler-decompiler y viendo como implementa en varios lenguajes..

-----
Por otro lado, el codigo se ve relativamente trivial. Una manera de ir interpretando es usando la ayuda para buscar la descripcion de las clases, luego haciendo paso a paso con el debugger e ir anotando mental o por escrito lo que va pasando. Para tan pocas lineas, no deberia tomarte mas de 1 hora resolverlo. Hay algo en concreto que te tenga pegado?
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 26-12-2012
Blade_Is_One Blade_Is_One is offline
Registrado
 
Registrado: nov 2006
Posts: 3
Poder: 0
Blade_Is_One Va por buen camino
Gracias por la pronta respuesta, el problema que tengo es que necesito usar este algoritmo que me entregaron en Csharp y lo debo implementar en un sistema echo en delphi yo manejo bien delphi el problema me a dado que no e podido homologar este script completo a delphi hay sentencias que no entiendo mucho, lo converti a visual basic .NET para ejecutarlo y ver como funciona pero se cae , por lo mismo se me habia ocurrido compilarlo en en el lenguaje que biene pero transformandolo en DLL pero por lo que me comentas seria lo mismo que generar un DLL de visualBasic que solo corre en visualbasic, alguna ayuda que me des para homologar este script a Delphi. te lo agradeceria mucho.

Cita:
Empezado por mamcx Ver Mensaje
Para volverlo una DLL es solo cuestion de configurar el proyecto que genere un ensamblado de .NET. Tu problema va a ser como llamar esa DLL desde delphi, que es codigo nativo. Es posible, pero una vuelta larga para un codigo tan corto. Ademas no tiene nada que dependa si o si de correr en .NET y me parece que portarlo es mejor.

Cuando te enfrentes a estas cosas, lo que debes hacer es concentrarte en que problema tienes, no en el codigo concreto. Que es lo que hace? Como se llama el algoritmo usado? y entonces buscas una implementacion en Delphi que logre lo mismo.

Hay algo con .NET util y es que se puede desesamblar un codigo en .NET y verlo en multiples lenguajes, usando ---- -- - -- y viendo como implementa en varios lenguajes..

-----
Por otro lado, el codigo se ve relativamente trivial. Una manera de ir interpretando es usando la ayuda para buscar la descripcion de las clases, luego haciendo paso a paso con el debugger e ir anotando mental o por escrito lo que va pasando. Para tan pocas lineas, no deberia tomarte mas de 1 hora resolverlo. Hay algo en concreto que te tenga pegado?
Responder Con Cita
  #4  
Antiguo 02-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Blade_Is_One,

Cita:
Empezado por Blade_Is_One
El problema que tengo es que necesito usar este algoritmo que me entregaron en C# y lo debo implementar en un sistema hecho en Delphi
Cita:
Empezado por mamcx
Cuando te enfrentes a estas cosas, lo que debes hacer es concentrarte en que problema tienes, no en el codigo concreto. Que es lo que hace? Como se llama el algoritmo usado? y entonces buscas una implementacion en Delphi que logre lo mismo.
No soy experto en C# pero según entiendo el algoritmo realiza : El Cálculo del CRC16 de un String en base al Polinomio Generador $A001.

Revisa este código:
Código Delphi [-]
Library CRC;

uses
   SysUtils, Classes, Dialogs, StrUtils, Math;

{$R *.res}

function Crc16(Buffer : String; Polynom, Initial : Cardinal) : Cardinal;
var
   i,j : Integer;

begin
   Result := Initial;
   for i := 1 to Length(Buffer) do
   begin
      Result := Result xor ord(buffer[i]);
      for j := 0 to 7 do
      begin
         if (Result and $0001) <> 0 then
            Result := (Result shr 1) xor Polynom
         else
            Result := Result shr 1;
      end;
   end;
end;

function ComputeChecksum(Buffer : PChar) : Cardinal; stdcall;
var
   i : Cardinal;
   CrcTable : Array[0..255] of Cardinal;

begin

   for i := 0 to 255 do
      CrcTable[i] := Crc16(chr(i), $A001, 0);

   Result := 0;

   for i := 1 to Length(Buffer) do
     Result := (Result shr 8) xor CrcTable[(ord(Buffer[i]) xor Result) and $ff];

end;

exports
   ComputeChecksum;

end.
El código anterior Calcula el CRC16 de un String en base al Polinomio Generador $A001 por medio de la función exportada ComputeChecksum de la DLL CRC.

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function ComputeChecksum(Buffer : PChar) : Cardinal; StdCall; external 'CRC.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(IntToStr(ComputeChecksum(PChar(Edit1.Text))));
end;

end.
El código anterior utiliza la DLL CRC para el cálculo del CRC16 de un String.

Revisa estos Links:
Cita:
CRC calculations
http://www.miscel.dk/MiscEl/CRCcalculations.html

Tutorial: Cyclic Redundancy Check (CRC) Computation
https://marcel.wanda.ch/Tutorial/CRC/
Quizás esta solución se pueda adaptar a tu proyecto.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 02-01-2013 a las 20:19:36.
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
Convertir este código fuente the CSharp a Delphi Blade_Is_One .NET 0 20-12-2012 14:59:51
Alguien que me ayude con Error de Delphi 7 Barzaugc Varios 1 03-06-2005 02:06:36
alguien que me ayude jhonveras DB2 2 06-05-2004 01:59:33
Alguien que me ayude con FASTREPORT CI>140 Impresión 1 27-09-2003 16:17:10
ERROR. alguien que me ayude Markoz Firebird e Interbase 2 16-09-2003 00:01:30


La franja horaria es GMT +2. Ahora son las 20:27:52.


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