webForumDet fria alternativet

Array-problem

16 svar · 623 visningar · startad av l-boy

l-boyMedlem sedan juli 2003221 inlägg
#1

Använder en komponent som heter ABC PDF. En funktion i denna returnerar en "Array of Strings".


Dim tagIds
tagIds = theDoc.HtmlOptions.GetTagIDs(theID)
response.write ubound(tagIds)&"<br>"
response.write isarray(tagIds)

Ger mig:

5
true

Betyder inte detta att jag skall kunna köra en response.write tagIds(1) utan problem? Får nämligen felmeddelandet " Inkompatibla typer: 'tagIds' " ..

Vad är tokigt?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Vad ger lbound(tagIds)?

l-boyMedlem sedan juli 2003221 inlägg
#3

Det ger 0

EclipseMedlem sedan juli 20003 825 inlägg
#4

kolla varType i manualen.

Dim tagIds
tagIds = theDoc.HtmlOptions.GetTagIDs(theID)
response.write varType (ubound(tagIds) ) &"<br>"
response.write varType( isarray(tagIds) )

OK, eller denna då!? quick and dirty...

IF tagIds(0) <> "" THEN response.write tagIds(0) & "<BR>"
IF tagIds(1) <> "" THEN response.write tagIds(1) & "<BR>"
IF tagIds(2) <> "" THEN response.write tagIds(2) & "<BR>"
IF tagIds(3) <> "" THEN response.write tagIds(3) & "<BR>"
IF tagIds(4) <> "" THEN response.write tagIds(4) & "<BR>"
l-boyMedlem sedan juli 2003221 inlägg
#5

vartype(tagids) = 8200 ...

EclipseMedlem sedan juli 20003 825 inlägg
#6

http://www.w3schools.com/vbScript/func_vartype.asp

om du har ett nummer som inte finns i listan så blir det problem...

***
Satsa på en åtta!

8 = vbString - Indicates a string

Cstr( tagIds(1) )

l-boyMedlem sedan juli 2003221 inlägg
#7

8200:
returns 8192 + VarType(array_element).
8 = vbString - Indicates a string

Så det stämmer juh...

EclipseMedlem sedan juli 20003 825 inlägg
#8

Det har du rätt i! Då är du på rätt spår!

l-boyMedlem sedan juli 2003221 inlägg
#9

Eclipse skrev:

kolla varType i manualen.

Dim tagIds
tagIds = theDoc.HtmlOptions.GetTagIDs(theID)
response.write varType (ubound(tagIds) ) &"<br>"
response.write varType( isarray(tagIds) )

OK, eller denna då!? quick and dirty...

IF tagIds(0) <> "" THEN response.write tagIds(0) & "<BR>"
IF tagIds(1) <> "" THEN response.write tagIds(1) & "<BR>"
IF tagIds(2) <> "" THEN response.write tagIds(2) & "<BR>"
IF tagIds(3) <> "" THEN response.write tagIds(3) & "<BR>"
IF tagIds(4) <> "" THEN response.write tagIds(4) & "<BR>"

Inkompatibla typer: 'tagIds'
/pdf/default.asp, line 12

#12 = IF tagIds(0) <> "" THEN response.write tagIds(0) & "<BR>"

l-boyMedlem sedan juli 2003221 inlägg
#10

Eclipse skrev:

Cstr( tagIds(1) )

Inkompatibla typer: 'tagIds'

Peter SMedlem sedan dec. 20025 483 inlägg
#11

Kan du loopa över arrayen med For Each?

For Each item In tagIds
  Response.Write item & "<br>"
Next
l-boyMedlem sedan juli 2003221 inlägg
#12

Nope.

"Inkompatibla typer" på första raden.

SPiNMedlem sedan mars 20007 896 inlägg
#13

Du verkar inte få någon array tillbaka från GetTagIDs(). Titta på typen av den:

Response.Write TypeName(tagIds)
If TypeName(tagIds) = "String" Then
   Response.Write tagIds
End If
l-boyMedlem sedan juli 2003221 inlägg
#14

Response.Write TypeName(tagIds)
ger
String()

Men

Response.Write tagIds
Funkar inte.
(En ohanterad datatyp påträffades.)

Peter SMedlem sedan dec. 20025 483 inlägg
#15

Du verkar inte vara ensam om problemet i alla fall: http://forums.devshed.com/asp-programming-51/type-mismatch-when-working-with-arrays-130919.html.

Problemet är att det är en String() som returneras medan VBScript vill ha en variant.

EclipseMedlem sedan juli 20003 825 inlägg
#16

Ja... sista posten var intressant, citerad nedan.

Men hur gör man en EN-dimensionell array till en TVÅ-dimensionell? Utan att skriva siffror och bokstäver för hand!?

Ja.. det är i alla fall inte min hjärna kapabel att räkna ut i skrivande stund!

Public Function Test() As Variant

Dim f(0, 3) As Variant ' f(3) replaced here with f(0,3)

f(0, 1) = "a"
f(0, 2) = "b"
f(0, 3) = "c"

Test = f

End Function
Peter SMedlem sedan dec. 20025 483 inlägg
#17

Förmodligen måste man skriva en wrapper för abcpdf-metoden som ser ut enligt ovan.

141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)