devotionMedlem sedan jan. 20013 582 inlägg Hej,
Jag behöver en funktion där man anger en variabel, en position och en längd enligt:
function f(s, nStartPos, nLenght)
end function
Funktionen skall användas till att skapa en textfilsrad med fasta positioner
om jag anger:
f("foo", 1, 5) & f("bar", 6, 4)
Skall det genereras en post enligt:
Test.bar.
där . är mellansteg
Någon vänlig själ, som kan hjälpa till?
:)
Mvh
Henrik
devotionMedlem sedan jan. 20013 582 inlägg
@nders skrev:
Uhm, Mid()?
Nä, det där blev ju inte rätt!
Jag vill ju skapa en funktion, som tar ett antal variabler(tex från ett recordset) och bygger ihop dessa till en lång sträng med fasta positioner för de ingående variablerna och fylla ut mellanrummen mellan dem med mellansteg
Exempel:
KOR 878678 000000001 1111
Därför skall nog funktionen heta GetFixedposition(s, sPosition) typ
Mvh
henrik
Kör en Split() om du skall kunna hämta ut "KOR" och "878678".
devotionMedlem sedan jan. 20013 582 inlägg
voigtann1 skrev:
Kör en Split() om du skall kunna hämta ut "KOR" och "878678".
Jag vill inte hämta ut, jag vill skapa. :)
Mvh
henrik
En Funktion retunera data, så då ber jag om ursäkt att jag missförstod dig. Och förstå inte alls vad du är ute efter måste jag säga ;)
devotionMedlem sedan jan. 20013 582 inlägg Haha!
Det år många som inte förstår, du är inte ensam... :)
Jag försöker en gång till. :)
jag vill skapa en textsträng som skall skrivas till en textfil på en rad.
textsträngen skall ha ett antal "värden" på fasta positioner eftersom det läsande programmet hämtar från de positionerna.
Strängen skall se ut enligt:
Foo bar wee
dvs Foo börjar på pos 1, bar börjar på pos 5, wee börjar på pos 12
Mellan alla värden skall dt fyllas ut med mellansteg.
:)
Mvh
henrik
för varje "loop" så får du se hur lång texten var, och köra en Space(x) på hur många tecken som behövs läggas in för att den skall "komma" på plats.
devotionMedlem sedan jan. 20013 582 inlägg Testade med:
function f(s, nlength)
f = left(s & string(20, " "), nlength)
end function
Den fungerar ju nästan...
Den sätter ju en längd, dock så utgår den ju från föregående 'värde' hela tiden.
<% =f("KOH", 5) & f("A", 6) & f("B", 10) %>
Jag vill ju sätta en startposition istället
<%
Function AddSpace(str, nLength)
AddSpace = str & Space(nLength-Len(str))
End Function
Response.Write AddSpace("hej",10)
Response.Write AddSpace("på",10)
Response.Write AddSpace("1234567890",10)
%>
devotionMedlem sedan jan. 20013 582 inlägg
voigtann1 skrev:
<%
Function AddSpace(str, nLength)
AddSpace = str & Space(nLength-Len(str))
End Function
Response.Write AddSpace("hej",10)
Response.Write AddSpace("på",10)
Response.Write AddSpace("1234567890",10)
%>
Gör den inte samma sak? :)
Jag vill ju ha en funktion som sätter positionen och fyller ut med mellansteg.
Function SetPosition(str, nPosition)
dim s
'fiffig kod
SetPosition = s
end function
Mvh
henrik
Det är ju bara att loopar ut ditt objekt och köra funktionen i den funktionen som loopar ut. men automatiskt känns ju omöjligt att göra för dig just nu, eftersom du har 5, 6 och 10 i ditt exempel, då behöver man en array eller liknande för att veta hur många mellanslag den skall lägga in efter varje hopp i loopen den gör.
devotionMedlem sedan jan. 20013 582 inlägg Jag löste det så här:
sub SetSubString(ByRef sFull, sSubString, nPos, nLen)
' Make sure that sFull is at least nPos+nLen chars long
if Len(sFull)<nPos+nLen then sFull=sFull & Space(nPos+nLen-Len(sFull))
' Make sure that sSubString is at least nLen chars long (pad right)
if Len(sSubString)<nLen then sSubString=sSubString & Space(nLen-Len(sSubString))
sFull=Left(sFull, nPos-1) & Left(sSubString, nLen) & Mid(sFull, nPos+nLen)
end sub
och
<%
dim sHeader
sHeader=Space(205)
call SetSubString(sHeader, "KOH", 1, 5)
call SetSubString(sHeader, "A", 6, 6)
call SetSubString(sHeader, "<Task.CustomerNr>", 12, 10)
Response.Write sHeader
%>
Mvh
Henrik