Toon posts:

[ASP] resultaat FOR, NEXT of DO LOOP naar variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Via ASP wil ik graag een .txt bestand aanmaken vanuit een formulier. Dit txt bestand zal na het aanmaken ervan worden geimporteerd door een software programma.

Het softwareprogramma heeft een aantal vaste posities ingesteld voor iedere waarde. In het voorbeeld moet strBerichtID 10 tekens bevatten. Als het bijvoorbeeld slechts 4 tekens bevat dan moet strBerichtID worden aangevuld met 6 tekens.

code:
1
2
3
4
5
6
7
8
IF LEN(strBerichtID) < 10 then
strLengte = 10
strOpvulling = strLengte - LEN(strBerichtID)
For i =1 To strOpvulling
  Response.Write "_"
Next
  response.write strBerichtID
END IF


Als strBerichtID nu "test" bevat komen er keurig 6 tekens (_) voor te staan. Hoe zorg ik er voor dat strBerichtID wordt opgeslagen als variabele maar dan het resultaat van response.write.

Ofwel, het nieuwe resultaat moet "______test" worden.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Visual Basic:
1
2
3
4
5
6
7
if len(strBerichtID) < 10 then
  strOpvulling = 10 - LEN(strBerichtID)
  for i = 1 to strOpvulling step 1
    strBerichtID = "_" & strBerichtID
  next
  response.write strBerichtID
end if

:?

Edit:
De oplossing hier beneden is beters zelfs, daar kun je ook net zo goed de if-statement achterwege laten.

[ Voor 95% gewijzigd door André op 09-08-2004 15:32 ]


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Ik denk dat je dit bedoelt:

code:
1
2
3
4
5
6
7
If len(strBerichtID) < 10 Then

  Do While len(strBerichtID) < 10
    strBerichtID = "_" & strBerichtID
  Loop

End If

[ Voor 8% gewijzigd door DukeMan op 09-08-2004 15:29 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 21-05 22:25
Basiskennis programmeren:
code:
1
2
3
4
5
6
7
8
9
10
11
dim my_Response_Write_Vervanger
my_Response_Write_Vervanger = ""
IF LEN(strBerichtID) < 10 then
strLengte = 10
strOpvulling = strLengte - LEN(strBerichtID)
For i =1 To strOpvulling
  my_Response_Write_Vervanger = my_Response_Write_Vervanger & "_"
Next
  my_Response_Write_Vervanger = my_Response_Write_Vervanger & strBerichtID
END IF
Response.Write my_Response_Write_Vervanger

Verwijderd

Topicstarter
André schreef op 09 augustus 2004 @ 15:27:
Visual Basic:
1
2
3
4
5
6
if len(strBerichtID) < 10 then
  for i = 1 To 10 - LEN(strBerichtID) step 1
    strBerichtID = strBerichtID + "_"
  next
  response.write strBerichtID
end if

:?
Pfff... ik ben er niet helemaal bij :Z :O en inderdaad.. basiskennis!

Verwijderd

NTGiant schreef op 09 augustus 2004 @ 15:29:
Ik denk dat je dit bedoelt:

code:
1
2
3
4
5
6
7
If len(strBerichtID) < 10 Then

  Do While len(strBerichtID) < 10
    strBerichtID = "_" & strBerichtID
  Loop

End If
De If is nog niet eens nodig, de While vangt de startconditie al voldoende af.

Deze oplossing is imho het netst/leesbaarst, gegeven wat VB je voor gereedschap geeft. Als het nou Python was... ;)

[ Voor 9% gewijzigd door Verwijderd op 09-08-2004 15:35 ]


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
code:
1
strBerichtID = Left("__________", 10-Len(strBerichtID)) & strBerichtID

Verwijderd

Shir schreef op 09 augustus 2004 @ 15:45:
code:
1
strBerichtID = Left("__________", 10-Len(strBerichtID)) & strBerichtID
I got that beat :-

code:
1
strBerichtID = Right("__________" & strBerichtID, 10)


B)

(En ik slik nederig mijn woorden weer in ;))

[ Voor 23% gewijzigd door Verwijderd op 09-08-2004 15:57 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

En die laatste is trouwens ook de enige die er ook nog voor zorgt dat de input neit langer dan 10 tekens wordt ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
:)

Verwijderd

twee standaard functies die ik in al mijn VB projecten gebruik. Padleft vult links, padright aan de rechterkant.


Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Public Function PadRight(Waarde As String,PadChar As String,Lengte As Long) As String
  Dim dummy As String
  dummy = Waarde & String(Lengte, PadChar)
  PadRight = Left$(dummy, Lengte)
End Function

Public Function PadLeft(Waarde As String,PadChar As String,Lengte As Long) As String
  Dim dummy As String
  dummy = String(Lengte, PadChar) & Waarde
  PadLeft = Right$(dummy, Lengte)
End Function


N.B. : Ik weet dat de extra stap met de dummy variabele niet hoeft, maar het maakt de code iets beter te lezen.
Pagina: 1