/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
hjælp med eksterne funktioner
Fra : Steven Nybo Andersen


Dato : 30-12-05 08:55

Hej alle.

Jeg har et ønske om at have alle mine funktioner i dll-filer.
Det ville give mig mulighed for at have eet program der bare skulle kalde
funktionerne og så lave backups / udvidelser / debuggede versioner af de
pågældende dll-filer som jeg så sender til brugeren

men jeg har problemer med at få VB6 til at makke ret. JEg kan få lov at
lave en activex-dll men intet ser ud til at virke.

følgende er forsøgt:

i et activex-dll projekt har jeg oprettet et kodemodul i det har jeg
skrevet.

public function hey as string
hey = "heythere"
end function

derefter er dll-filen blevet kompileret og jeg laver et nyt projekt
med et kodemodul hvor jeg har skrevet

declare function hey lib "<sti til dll-fil>" as string

hvis jeg så i emediatevinduet skriver msgbox hey får jeg en fejl med at

can't find DLL entry point hey in <navn på dll-fil>

Når jeg åbner filen i en dumper kan jeg heller ikke se min funktion der

Jeg har læst en del om hvorvidt man får C-kode til at køre fra en DLL men
det er ikke interessant i det her projekt da jeg jo koder VB.
Det ville også være dejligt om jeg kunne bruge den dll-fil jeg laver til
f.eks. noget VBA-kode men hvordan bærer man sig ad.

Et muligt projekt kunne f.eks. være at lave et bestemt program som skulle
være internationalt og så bare lade programmet hente alle tekster til
knapper, mærkater oa. fra en dll-fil eller simpelthen have funktionerne
til programmet i en sådan men jeg kan slet ikke få det til at virke. Jeg
har læst en del om at VB ikke kan finde ud af at lave en vin32-dll men
det må sku kunne lade sig gøre at lave en dll fil med vb til vb selv
eller hvad? Er det helt umuligt og hvordan kommer jeg ellers igang.

Steven

 
 
Peter Lykkegaard (30-12-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 30-12-05 09:28

"Steven Nybo Andersen" wrote

> Jeg har et ønske om at have alle mine funktioner i dll-filer.
> Det ville give mig mulighed for at have eet program der bare skulle kalde
> funktionerne og så lave backups / udvidelser / debuggede versioner af de
> pågældende dll-filer som jeg så sender til brugeren
>
> men jeg har problemer med at få VB6 til at makke ret. JEg kan få lov at
> lave en activex-dll men intet ser ud til at virke.
>
Lav dit ActiveX komponent og kompiler, fx

Class MyComponent
Public ReadOnly Property Hello
Hello = "Hello"
End Property
End Class

Opret et nyt projekt (ActiveX eller Program)

Gå i references og tilføj det komponent du lige har lavet

Sub Main
Dim myComp As MyComponent = New MyComponent
Dim someValue As String

someValue = myComp.Hello
End Sub

Sådan frit efter hukommelsen

Den her skulle gerne sætte dig igang
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconcreatingolecomponents.asp

- Peter



Steven Nybo Andersen (30-12-2005)
Kommentar
Fra : Steven Nybo Andersen


Dato : 30-12-05 09:47

fr 30 dec 2005 09:27:41a satte Peter Lykkegaard sig på en taburet og
skrev følgende på et stykke vådt franskbrød:


> Class MyComponent
> Public ReadOnly Property Hello
> Hello = "Hello"
> End Property
> End Class
>
> Opret et nyt projekt (ActiveX eller Program)
>
> Gå i references og tilføj det komponent du lige har lavet
>
> Sub Main
> Dim myComp As MyComponent = New MyComponent
> Dim someValue As String
>
> someValue = myComp.Hello
> End Sub

Jo men så havner den jo i projektet og bliver kompileret ind i pjojektet
men det jeg ville have var jo at den skulle ligge ved siden af exe-filen
så jeg bare skal sende en ny dll-fil hvis funktionerne skal opdateres.
Hvordan gør jeg det

Steven


Peter Lykkegaard (30-12-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 30-12-05 10:25

"Steven Nybo Andersen" wrote

> Jo men så havner den jo i projektet og bliver kompileret ind i pjojektet

Ja hvis du laver eet projekt med en klasse og et module

> men det jeg ville have var jo at den skulle ligge ved siden af exe-filen
> så jeg bare skal sende en ny dll-fil hvis funktionerne skal opdateres.
> Hvordan gør jeg det
>
Ved at lave to projekter
Eet ActiveX med klassen og et Program med main module

- Peter



Steven Nybo Andersen (31-12-2005)
Kommentar
Fra : Steven Nybo Andersen


Dato : 31-12-05 02:33

fr 30 dec 2005 10:25:19a satte Peter Lykkegaard sig på en taburet og skrev
følgende på et stykke vådt franskbrød:


> Ved at lave to projekter
> Eet ActiveX med klassen og et Program med main module

Tusinde tak for hjælpen det virkede men der er bare eet problem med den
metode. Dll-dilen skal registreres i registreringsdatabasen. Kan man ikke
komme ud over det problem. Jeg ved godt at VB registrere den for een men
det er bare noget skod for slutbrugeren. Enten skal man selv lave et lille
program der registrere den eller også skal man bruge pakkeprogrammet fra
VB. Jeg så helst at man bare skulle have dll og exe-fil i samme mappe for
at det virkede men kan man gøre det på en anden måde så den ikke behøver at
registrere dllen

Ellers mange tak for hjælpen og godt nytår.

Steven

Peter Lykkegaard (31-12-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 31-12-05 12:08

"Steven Nybo Andersen" wrote

> Tusinde tak for hjælpen det virkede men der er bare eet problem med den
> metode. Dll-dilen skal registreres i registreringsdatabasen.

Ja

> Kan man ikke komme ud over det problem.

Tjo lav komponenterne i C og brug API kald
Eller brug VB.NET

> Jeg ved godt at VB registrere den for een men det er bare noget skod
> for slutbrugeren. Enten skal man selv lave et lille
> program der registrere den

Brug InnoSetup
http://www.jrsoftware.org/isinfo.php

Fantasisk program

> eller også skal man bruge pakkeprogrammet fra VB.

Don't - det er noget skod

> Jeg så helst at man bare skulle have dll og exe-fil i samme mappe for
> at det virkede men kan man gøre det på en anden måde så den ikke
> behøver at registrere dllen
>
Brug et installationsprogram
Det er meget bedre for alle parter
Så kan man også afinstallere "skidtet" igen :)

> Ellers mange tak for hjælpen og godt nytår.
>
Og Godt Nytår herfra :)

- Peter



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste