Avatar billede steen_hansen Forsker
09. januar 2005 - 23:38 Der er 15 kommentarer og
1 løsning

Problemer med at konvertere functions fra ASP (VB-scripting)

Jeg er så småt gået i gang med ASP.NET, og forsøger at konvertere nogle gamle functions:

Function AddZ(ByVal vNumber)
    AddZ = CStr(vNumber)
    If len(AddZ) < 2 Then _
        AddZ = "0" & AddZ
End Function

Det får jeg en compiler-error ud af:

Compiler Error Message: BC30289: Statement cannot appear within a method body. End of method assumed.

Hvordan omskriver jeg det, så det kan lade sig gøre i et ASPX-dokument?
Avatar billede fixxxer Nybegynder
10. januar 2005 - 00:09 #1
skal man ikke afslutte sine If statements?

    If len(AddZ) < 2 Then _
        AddZ = "0" & AddZ
    End If
Avatar billede steen_hansen Forsker
10. januar 2005 - 00:31 #2
Jo, det er rigtigt, tak for det :) Men det ændrer ikke noget på problemet.
Avatar billede neocron Nybegynder
10. januar 2005 - 01:44 #3
Nu er jeg ikke særlig kyndig i ASP / VB, men kan det være pga underscoren _ efter then?

Function AddZ(ByVal vNumber)
    AddZ = CStr(vNumber)
    If len(AddZ) < 2 Then _ <-- "_" tilladt?
        AddZ = "0" & AddZ
    End If
End Function

Prøv evt at fjerne den.
Avatar billede basementjack Nybegynder
10. januar 2005 - 02:04 #4
Nu taler jeg ikke classic asp, så hvis du fortæller mig hvad den gør, så kan jeg lave den til dig?.. :)
_& eller &_ eller noget i den stil er en måde at fortælle ens kode, at denne linie endnu ikke er slut.
If _statement Then _execute er også tilladt, så længe det kan være på en enkelt linie, ellers skal alle If's lukkes med en End If.
Avatar billede steen_hansen Forsker
10. januar 2005 - 15:06 #5
Scriptet tjekker, om der i klokkeslættet er 1 eller 2 cifre i timeangivelsen. Hvis klokken er mellem midnat 9:59, bliver der sat et nul foran timetallet:

07:00
08:00
09:00
10:00
11:00
12:00
13:00
.........

neocron: _ (underscore) fortæller bare i VB-scripting, at koden fortsætter på næste linie. No big deal, men meget brugbart, når lange kodestykker skal gøre overskuelige :)
Avatar billede steen_hansen Forsker
10. januar 2005 - 15:10 #6
1:00
2:00
3:00
4:00
5:00
6:00
7:00
8:00
9:00

bliver til

01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
Avatar billede basementjack Nybegynder
10. januar 2005 - 21:10 #7
Jamen det er vel bare :

Function CorrectHour(time As String)
  Dim str As String
  If time.length = 4 Then
    str = "0" & time
  End If
  Return str
End Function

Ikke?..... :?
Avatar billede basementjack Nybegynder
10. januar 2005 - 21:12 #8
Og beklager min lange svartid.. Skulle på arbejde.. :)
Avatar billede steen_hansen Forsker
10. januar 2005 - 21:15 #9
Det skal du ikke beklage, er kun glad for hjælp, når/hvis du har tiden :)

Jeg har fundet ud af(!), at det ikke bare lige er til at konvertere VB-scripting til VB.NET, så jeg fortsætter med VB-scripting, og vil på et tidspunkt begynde at eksperimentere med ASP.NET :)

Men du skal have 3432435473543 tak for indsatsen, og du må gerne lægge et svar, basementjack :)
Avatar billede basementjack Nybegynder
10. januar 2005 - 21:39 #10
Hehe.. Asp.Net er meget let, hvis man lige sætter sig ned og læser en smule på det..
Avatar billede steen_hansen Forsker
10. januar 2005 - 21:41 #11
Ok, jeg vil prøve, når jeg har fået alt det andet op at køre. Ellers varer det længe, inden siden kommer op at stå :)

Tak for hjælpen, bedste ven :)
Avatar billede basementjack Nybegynder
10. januar 2005 - 21:54 #12
Hehe.. Du laver bare et spm, og så svarer jeg.. ;)
Avatar billede arne_v Ekspert
10. januar 2005 - 22:36 #13
Jeg har bixet lidt illustrative eksempler.

Først den helt simple ASP kode:

virker.asp
----------

<%@ Language="VBScript" %>
<%
Function AddZ(ByVal vNumber)
    AddZ = CStr(vNumber)
    If len(AddZ) < 2 Then AddZ = "0" & AddZ
End Function

For i = 0 To 23
  Response.Write AddZ(i) & "<br>"
Next
%>

Den kan imidlertid skrives lidt pænere:

virkerbedre.asp
---------------

<%@ Language="VBScript" %>

<Script Language="VBScript" RunAt="Server">
Function AddZ(ByVal vNumber)
    AddZ = CStr(vNumber)
    If len(AddZ) < 2 Then AddZ = "0" & AddZ
End Function
</Script>

<%
For i = 0 To 23
  Response.Write AddZ(i) & "<br>"
Next
%>

Pointen er at når vi porterer virker.asp til ASP.NET så får vi et problem:

virkerikke.aspx
---------------

<%@ Page Language="VB" %>
<%
Function AddZ(ByVal vNumber As Integer) As String
    AddZ = vNumber.ToString()
    If AddZ.Length < 2 Then AddZ = "0" & AddZ
End Function

Dim i As Integer
For i = 0 To 23
  Response.Write(AddZ(i) & "<br>")
Next
%>

giver "Compiler Error Message: BC30289: Statement cannot appear within a method body. End of method assumed."

Hvis vi derimod porterer virkerbedre.asp til ASP.NET så virker det:

virker.aspx
-----------

<%@ Page Language="VB" %>

<Script Language="VBScript" RunAt="Server">
Function AddZ(ByVal vNumber As Integer) As String
    AddZ = vNumber.ToString()
    If AddZ.Length < 2 Then AddZ = "0" & AddZ
End Function
</Script>

<%
Dim i As Integer
For i = 0 To 23
  Response.Write(AddZ(i) & "<br>")
Next
%>

Men det er selvfølgelig slet ikke den rigtige ASP.NET måde at gøre det på. Her
er en alternativ måde (om den er god elle rej må større .NET guruer end mig vurdere):

virkerbedre.aspx
----------------

<%@ Page Language="VB" Inherits="VirkerBedre" %>

<ASP:Repeater Id="Hours" RunAt="Server">
    <ItemTemplate>
        <%# AddZ(Container.DataItem) %><br>
    </ItemTemplate>
</ASP:Repeater>

VirkerBedre.vb
--------------

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Public Class VirkerBedre
Inherits Page
    Protected Hours As Repeater
    Public Function AddZ(ByVal vNumber As Integer) As String
        AddZ = vNumber.ToString()
        If AddZ.Length < 2 Then AddZ = "0" & AddZ
    End Function
    Public Sub Page_Load(Sender As Object, E As EventArgs)
        Dim h() As Integer = { 0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }
        Hours.DataSource = h
        Hours.DataBind
    End Sub
End Class
Avatar billede steen_hansen Forsker
10. januar 2005 - 22:54 #14
Arne, du er jo rå til dét der, jeg troede du var PHP-mand :)

Kan du ikke lige svare på http://www.eksperten.dk/spm/579341?
Avatar billede arne_v Ekspert
10. januar 2005 - 23:00 #15
Ikke specielt. Jeg er nok mere JSP mand. Men jeg kan lidt forskelligt.
Avatar billede steen_hansen Forsker
10. januar 2005 - 23:08 #16
Uanset hvad, så må jeg sige du har været til stor hjælp de sidste par dage. Det skal du have tak for :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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