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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
ByVal / ByRef?
Fra : Stefan Kristensen


Dato : 04-03-04 09:04

Hej NG.

Jeg skal bruge en lidt speciel login side:
Brugeren indtaster sit userid og password og verificeres mod et givent
system. Indtastes korrekt userid og password, skal brugeren logges på
systemet med et mappet userid, der kan være forskelligt fra det der blev
brugt til verificering.

Det har jeg lavet en VB6 dll, der klarer fint:
Public Function Verify(PlatformID as String, ByVal Password as String) As
Boolean
If OkPass(PlatformID, Password) Then
PlatformID = GetMappedID(PlatformID)
End If
End Function

Det virker fint når jeg tester i en VB exe fil, men i ASP bliver værdien af
PlatformID ikke ændret.
Hvorfor ikke?

mvh
Stefan



 
 
Stefan Kristensen (04-03-2004)
Kommentar
Fra : Stefan Kristensen


Dato : 04-03-04 09:55

> Public Function Verify(PlatformID as String, ByVal Password as String) As
> Boolean
> If OkPass(PlatformID, Password) Then
> PlatformID = GetMappedID(PlatformID)
> End If
> End Function
Jeg har lavet PlatformID om til en Variant, og så virker det.
Men hvorfor virke det ikke med en String? Er der forskel på String i VB og
String i ASP?
Min ASP test kode er som følger:
Dim UserID
UserID = CStr(Request("UserID"))
If obj.Verify(UserID, Password) Then
Response.Write UserID
End If
Hvliket foriøvrigt giver 'Type mismatch' på UserID hvis det er en string i
VB, selvom typename="String" i ASP.

c",)
Stefan



Claus O (04-03-2004)
Kommentar
Fra : Claus O


Dato : 04-03-04 10:00

"Stefan Kristensen" <stefank@asg.com> wrote

> Er der forskel på String i VB og
> String i ASP?

ALLE variabler i ASP.old (vbscript) er VARIANT, nothing more.
I ASP.net er det ren VB.



Chrisser (04-03-2004)
Kommentar
Fra : Chrisser


Dato : 04-03-04 09:45

Stefan Kristensen wrote:
> Det har jeg lavet en VB6 dll, der klarer fint:
> Public Function Verify(PlatformID as String, ByVal Password as
> String) As Boolean
> If OkPass(PlatformID, Password) Then
> PlatformID = GetMappedID(PlatformID)
> End If
> End Function
>
> Det virker fint når jeg tester i en VB exe fil, men i ASP bliver
> værdien af PlatformID ikke ændret.
> Hvorfor ikke?

Gad vide om det ville hjælpe hvis du i din funktion angav ByRef på din
variabel:

Public Function Verify( ByRef PlatformID osv.

Ellers ville jeg jo sige at din returværdi skal indlæses i en variabel der
hedder det samme som din funktion og når du så kalder fra asp siger du:

strNyPlatformID = Verify(PlatformID osv.

Mvh
Chrisser



Stefan Kristensen (04-03-2004)
Kommentar
Fra : Stefan Kristensen


Dato : 04-03-04 12:29

> Gad vide om det ville hjælpe hvis du i din funktion angav ByRef på din
> variabel:
>
> Public Function Verify( ByRef PlatformID osv.
ByRef er default hvis man ikke angiver noget.

> Ellers ville jeg jo sige at din returværdi skal indlæses i en variabel der
> hedder det samme som din funktion og når du så kalder fra asp siger du:
>
> strNyPlatformID = Verify(PlatformID osv.
Ja, men den returnerer jo en Boolean. Jeg bruger ByRef for at kunne nøjes
med en enkelt funktion.

Stefan



Chrisser (04-03-2004)
Kommentar
Fra : Chrisser


Dato : 04-03-04 12:42

Stefan Kristensen wrote:
>> Gad vide om det ville hjælpe hvis du i din funktion angav ByRef på
>> din variabel:
>>
>> Public Function Verify( ByRef PlatformID osv.
> ByRef er default hvis man ikke angiver noget.

Ja, det er bare som om at nogle ting skal pointeres hvis man arbejder med en
dll der kaldes fra asp
- det er i hvert fald min erfaring...

>> Ellers ville jeg jo sige at din returværdi skal indlæses i en
>> variabel der hedder det samme som din funktion og når du så kalder
>> fra asp siger du:
>>
>> strNyPlatformID = Verify(PlatformID osv.
> Ja, men den returnerer jo en Boolean. Jeg bruger ByRef for at kunne
> nøjes med en enkelt funktion.

Den havde jeg overset

- men jeg kan se du fandt løsningen og så er det jo godt

Chrisser



Stefan Kristensen (04-03-2004)
Kommentar
Fra : Stefan Kristensen


Dato : 04-03-04 13:42

> Ja, det er bare som om at nogle ting skal pointeres hvis man arbejder med
en
> dll der kaldes fra asp
Det kan du have ret i. Jeg prøvede med ByRef men med samme fejl.

> - men jeg kan se du fandt løsningen og så er det jo godt
Snare en work around. Jeg er stadig interesseret i at vide om der bare er
forskel på String i ASP og VB, eller om det er noget andet der gør sig
gældende.

Stefan.



Chrisser (04-03-2004)
Kommentar
Fra : Chrisser


Dato : 04-03-04 14:15

Stefan Kristensen wrote:
>> Ja, det er bare som om at nogle ting skal pointeres hvis man
>> arbejder med en dll der kaldes fra asp
> Det kan du have ret i. Jeg prøvede med ByRef men med samme fejl.
>
>> - men jeg kan se du fandt løsningen og så er det jo godt
> Snare en work around. Jeg er stadig interesseret i at vide om der
> bare er forskel på String i ASP og VB, eller om det er noget andet
> der gør sig gældende.

Det er et godt spørgsmål - jeg har en dll lavet i VB. I den kalder jeg
funktioner fra asp med en hel masse argumenter - Jeg havde også problemer
med kaldet og endte med at caste dem idet jeg kalder funktionen:

Flet.UdskrivBrev Response, cstr(dok), cstr(cri), cstr(DSN) osv

Sådan at jeg caster til den type funktionen forventer - det virker for mig,
men jeg kører heller ikke med returværdier jeg skal blot fortælle hvordan
der gik og udskrive et link.
Dette gør jeg så fra dll'en via response ( som i øvrigt er rigtig god at
sende med ind især under udvikling fordi den letter debugging )

Chrisser



Stefan Kristensen (04-03-2004)
Kommentar
Fra : Stefan Kristensen


Dato : 04-03-04 16:35

> >> - men jeg kan se du fandt løsningen og så er det jo godt
> > Snare en work around. Jeg er stadig interesseret i at vide om der
> > bare er forskel på String i ASP og VB, eller om det er noget andet
> > der gør sig gældende.
>
> Det er et godt spørgsmål - jeg har en dll lavet i VB. I den kalder jeg
> funktioner fra asp med en hel masse argumenter - Jeg havde også problemer
> med kaldet og endte med at caste dem idet jeg kalder funktionen:
>
> Flet.UdskrivBrev Response, cstr(dok), cstr(cri), cstr(DSN) osv
>
> Sådan at jeg caster til den type funktionen forventer - det virker for
mig,
> men jeg kører heller ikke med returværdier jeg skal blot fortælle hvordan
> der gik og udskrive et link.
> Dette gør jeg så fra dll'en via response ( som i øvrigt er rigtig god at
> sende med ind især under udvikling fordi den letter debugging )
Yup. Jeg startede også med at caste alle mine kald til dll'erne. Men ved at
benytte ByVal i dll'erne behøver man ikke at caste i ASP

mvh
Stefan



Chrisser (05-03-2004)
Kommentar
Fra : Chrisser


Dato : 05-03-04 08:21

Stefan Kristensen wrote:
>> Sådan at jeg caster til den type funktionen forventer - det virker
>> for mig, men jeg kører heller ikke med returværdier jeg skal blot
>> fortælle hvordan der gik og udskrive et link.
>> Dette gør jeg så fra dll'en via response ( som i øvrigt er rigtig
>> god at sende med ind især under udvikling fordi den letter
>> debugging )
> Yup. Jeg startede også med at caste alle mine kald til dll'erne.
> Men ved at benytte ByVal i dll'erne behøver man ikke at caste i ASP

Det virker jo meget logisk

Chrisser



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

Månedens bedste
Årets bedste
Sidste års bedste