[ 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! |
[ mijak2005 @ 29.06.2005. 08:36 ] @
[ 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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|