Molio bih vas ako neko zna da kaze kako da importiram .net dll u delphi-ju ili kako registrirati .net dll pomocu regsvr32. Hitno je!
Kako importirati .net dll u delphi-ju ili kako registrirati .net dll pomocu regsvr32????
Zaključano
Zakačeno
1. Import .NET DLLa u Delphi pre verzije 8.0 je nemoguc. Delphi8 i Delphi9 su .NET native, pa importujes kao i bilo koji drugi assembly napravljen u Delphiu 8+
2. .NET objekti se ne registruju za COM preko regsvr32 altke. Koristi se regasm, a sekvenca ide ovako:
prva linija kreira type library od DLLa, druga linija registruje dll i sve klase u njemu kao COM server, a treca linija prebacuje dll u globalni cache. Ako si ti autor NET DLL-a veoma je preporucljivo da sve klase i interfejse "okitis" [GUID] attributima, da ne bi svaki rebuild i re-registracija objekta te objekte smestilo pod poseban GUID, sto ce ti na kraju napraviti gomilu djubreta u registry-u.
2. .NET objekti se ne registruju za COM preko regsvr32 altke. Koristi se regasm, a sekvenca ide ovako:
Code:
tlbexp NETCOMServer.dll /out:NETCOMServer.tlb
regasm /tlb:NETCOMServer.tlb NETCOMServer.dll
gacutil /i NETCOMServer.dll
tlbexp NETCOMServer.dll /out:NETCOMServer.tlb
regasm /tlb:NETCOMServer.tlb NETCOMServer.dll
gacutil /i NETCOMServer.dll
prva linija kreira type library od DLLa, druga linija registruje dll i sve klase u njemu kao COM server, a treca linija prebacuje dll u globalni cache. Ako si ti autor NET DLL-a veoma je preporucljivo da sve klase i interfejse "okitis" [GUID] attributima, da ne bi svaki rebuild i re-registracija objekta te objekte smestilo pod poseban GUID, sto ce ti na kraju napraviti gomilu djubreta u registry-u.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Zdravo mmix vidim da se odlicno snalazis sa ovime, pa zamolio bih te da mi kazes kako da registrujem tlb komponentu u delphiju cij programski kod izgleda ovako:
using System;
using System.Runtime.InteropServices;
using System.IO;
using System.Text;
using System.Data.SqlClient;
namespace obj
{
[Guid("400817F2-643B-40bb-ADBD-6C08D6B907A6")]
public interface Comobject_interface
{
[DispId(1)]
int Suma (int a,int b);
}
[Guid("4838C5ED-0165-4224-BC25-F42758A75F85"),InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface Comobject_Events
{
}
[Guid("CA24A168-E645-42e7-ABE3-ABB224357062"),ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(Comobject_Events ))]
public class Objekt : Comobject_interface
{
public int Suma(int a,int b)
{
int suma = 0;
suma = a+b;
return suma;
}
}
}
ucinio sam sve sto si mi rekao + sam registrovao ovu komponentu koristeci se programom tregsvr koji registruje componente za delphi, ali nakon sto ga kompajliram u delphiju dobijam sledece pogreske:
[Error] mscorlib_TLB.pas(4533): Type 'Byte' is not yet completely defined
[Error] mscorlib_TLB.pas(4548): Type 'Double' is not yet completely defined
[Error] mscorlib_TLB.pas(4574): Type 'Int64' is not yet completely defined
[Error] mscorlib_TLB.pas(4602): Type 'Single' is not yet completely defined
[Error] mscorlib_TLB.pas(5017): Illegal type in OLE automation section: 'Byte'
[Error] mscorlib_TLB.pas(5024): Illegal type in OLE automation section: 'Single'
[Error] mscorlib_TLB.pas(5025): Illegal type in OLE automation section: 'Double'
[Error] mscorlib_TLB.pas(10429): Illegal type in OLE automation section: 'Byte'
[Error] mscorlib_TLB.pas(10436): Illegal type in OLE automation section: 'Single'
[Error] mscorlib_TLB.pas(10437): Illegal type in OLE automation section: 'Double'
[Fatal Error] ClassLibrary1_TLB.pas(45): Could not compile used unit 'mscorlib_TLB.pas'
zamolio bih ko zna da mi pomogne , unapred vam hvala!
using System;
using System.Runtime.InteropServices;
using System.IO;
using System.Text;
using System.Data.SqlClient;
namespace obj
{
[Guid("400817F2-643B-40bb-ADBD-6C08D6B907A6")]
public interface Comobject_interface
{
[DispId(1)]
int Suma (int a,int b);
}
[Guid("4838C5ED-0165-4224-BC25-F42758A75F85"),InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface Comobject_Events
{
}
[Guid("CA24A168-E645-42e7-ABE3-ABB224357062"),ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(Comobject_Events ))]
public class Objekt : Comobject_interface
{
public int Suma(int a,int b)
{
int suma = 0;
suma = a+b;
return suma;
}
}
}
ucinio sam sve sto si mi rekao + sam registrovao ovu komponentu koristeci se programom tregsvr koji registruje componente za delphi, ali nakon sto ga kompajliram u delphiju dobijam sledece pogreske:
[Error] mscorlib_TLB.pas(4533): Type 'Byte' is not yet completely defined
[Error] mscorlib_TLB.pas(4548): Type 'Double' is not yet completely defined
[Error] mscorlib_TLB.pas(4574): Type 'Int64' is not yet completely defined
[Error] mscorlib_TLB.pas(4602): Type 'Single' is not yet completely defined
[Error] mscorlib_TLB.pas(5017): Illegal type in OLE automation section: 'Byte'
[Error] mscorlib_TLB.pas(5024): Illegal type in OLE automation section: 'Single'
[Error] mscorlib_TLB.pas(5025): Illegal type in OLE automation section: 'Double'
[Error] mscorlib_TLB.pas(10429): Illegal type in OLE automation section: 'Byte'
[Error] mscorlib_TLB.pas(10436): Illegal type in OLE automation section: 'Single'
[Error] mscorlib_TLB.pas(10437): Illegal type in OLE automation section: 'Double'
[Fatal Error] ClassLibrary1_TLB.pas(45): Could not compile used unit 'mscorlib_TLB.pas'
zamolio bih ko zna da mi pomogne , unapred vam hvala!
Zasto koristis tregsrv? Ta alatka sluzi da se Delphi COM objekat registruje u registry, tu operaciju ti vec radi regasm.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić