Avatar billede f_frandsen Nybegynder
02. december 2002 - 17:52 Der er 7 kommentarer

DLL med "userdefined type" HASTER !!

Hjælp.....

Jeg har lavet en DLL i VB 6.0 som følgende:

*******************************************
Private lokPriceInfo As typPriceInfo

Public Type typPriceInfo
CustomerName as string * 30
ProductName as string * 30
Price as Variant
end Type

Public Property Get PriceInfo() As typPriceInfo
    PriceInfo = lokPriceInfo
End Property

Public Function GetPriceInfo(CustomerNo as integer, ProductNo as string) As String
........
........ DB opslag osv.
........
lokPriceInfo.CustomerName = "Kunde navn"
lokPriceInfo.ProductName = "Vare beskrivelse"
lokPriceInfo.Price = VarensPris
End Function

******************************************
Her kommer problemet:

Når jeg anvender DLLén fra en ASP side, kan jeg ikke "fange" indholdet af min type variabel (PriceInfo)
Jeg får fejlen:
Microsoft VBScript runtime (0x800A01A8)
Object required
Hvad gør jeg galt ??????????????????????????



Her er mit script:
set x = server.CreateObject("Price.PriceClass")
y = x.GetPriceInfo(123, "ABC")

Response.Write "Kundenavn: " & x.PriceInfo.CustomerName
Response.Write "Varenavn: " & x.PriceInfo.ProductName
Response.Write "Pris: " & x.PriceInfo.Price
set x = nothing

NB !!
Jeg kan fint anvende DLLén i en anden VB aplikation, og har ingen problemer med mine variabler.
Avatar billede _just4fun_ Nybegynder
02. december 2002 - 19:19 #1
Jeg er ikke helt sikker på om dette spiller, men prøv:
Mon ikke du skal compile din .DLL så den leverer et typelibrary (.TLB) med (check project Properties->Component->RemoteServerFiles)

Den .TLB inkluderer du i toppen af din .ASP
<!--METADATA type="TypeLib" file="myDll.tlb" -->

Og derefter skulle du kunne bruge det der er er klæret i de .tlb

OG hvis det endelig er, skulle du så ikke bruge set hvis du assigner et object?
Avatar billede coltau Juniormester
02. december 2002 - 21:30 #2
Hvis man ikke kan finde fejlen kan man anvende udelukkelsesmetoden. Med udgangspunkt i fejlkoden. "Object required" skal man lede efter en linie hvor du anvender et object der ikke er oprettet.

Hvis fejlkoden fremkommer i en af de linier du viser kan det kun være en af disse linier.

y = x.GetPriceInfo(123, "ABC")
' Første linie hvor objectet x anvendes
Response.Write "Kundenavn: " & x.PriceInfo.CustomerName
' første linie hvor objectet x.PriceInfo anvendes

Det er nok sidste linie da nedenstående linie åbenbart IKKE har fejlet med fejlkoden: "ActiveX component can't create object: Price.PriceClass"
set x = server.CreateObject("Price.PriceClass")

Det tyder på at ASP-koden ikke kender denne type: Type typPriceInfo. ?

Kan du få noget ud af dette link:
http://www.sloppycode.net/asp-components/tutorial/
Avatar billede _just4fun_ Nybegynder
03. december 2002 - 00:01 #3
Hvaså frandsen, har du fået det til at virke, eller haster det alligevel ikke?
Avatar billede f_frandsen Nybegynder
03. december 2002 - 08:27 #4
Jeg har forsøgt løsningen med et typelibrary (TLB fil). Jeg får ingen fejl ved indlæsning af TLB filen, men det hjælper desværre ikke på problemet..
Avatar billede f_frandsen Nybegynder
03. december 2002 - 08:30 #5
coltau..  Problemet er lige netop at ASP-siden ikke kan fange typPriceInfo..
Det eksempel der er på linket, anvender ikke "user defined types", og jeg kan derfor ikke bruge det..
Avatar billede f_frandsen Nybegynder
03. december 2002 - 08:31 #6
_Just4fun. tak for din hurtige respons.. desværre var det ikke løsningen
Avatar billede _just4fun_ Nybegynder
03. december 2002 - 10:39 #7
oki... Havde samme problem for 2 års tid siden... synes ellers jeg løste det på denne måde.. hmmmm. Graver lige videre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester