[ mijak2005 @ 29.06.2005. 08:36 ] @
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!
[ mmix @ 29.06.2005. 11:57 ] @
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:
Code:

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.

[ mijak2005 @ 29.06.2005. 14:50 ] @
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!
[ mmix @ 29.06.2005. 19:00 ] @
Zasto koristis tregsrv? Ta alatka sluzi da se Delphi COM objekat registruje u registry, tu operaciju ti vec radi regasm.