|
| *buffer ? Fra : Lasse Madsen |
Dato : 25-08-04 22:57 |
|
Hej...
Jeg har en activeX komponent kaldet XE denne har en funktion som følger:
XE.Write (buffer as Byte, count as Long) as Long
jeg har prøvet følgende...
dim buffer as string
buffer = "Hej med dig dette er en streng"
XE.Write (buffer),len(buffer)
så får jeg en runtime fejl 13 ... der syntes at fortælle mig at buffer ikke
er en byte
prøver jeg med:
dim buf as byte
buf=&H64
XE.Write buf,1
fungere det fint ...
Kan det passe at man skal lave et array af bytes og kopiere sin string ind i
og derefter via en løkke sende det til sin komponent
det lyder noget tungnemt og i og med at der er lavet en count as long
operator syntes da også at tyde på at der er mulighed for at sende en streng
osv. videre...
Nogen ideer ...
M.v.h.
Lasse Madsen
| |
Lars Holm Jensen (25-08-2004)
| Kommentar Fra : Lars Holm Jensen |
Dato : 25-08-04 23:18 |
|
> XE.Write (buffer as Byte, count as Long) as Long
> jeg har prøvet følgende...
> dim buffer as string
> buffer = "Hej med dig dette er en streng"
> XE.Write (buffer),len(buffer)
> så får jeg en runtime fejl 13 ... der syntes at fortælle mig at buffer
> ikke
> er en byte
> prøver jeg med:
> dim buf as byte
> buf=&H64
> XE.Write buf,1
> fungere det fint ...
> Kan det passe at man skal lave et array af bytes og kopiere sin string ind
> i
> og derefter via en løkke sende det til sin komponent
> det lyder noget tungnemt og i og med at der er lavet en count as long
> operator syntes da også at tyde på at der er mulighed for at sende en
> streng
> osv. videre...
Det lyder som om at funktionen forventer et Byte Array..
Prøv at gemme din streng i et byte array, det gøres let sådan her:
Dim mybytes() As Byte
mybytes = StrConv(streng, vbFromUnicode)
Og så kald XE.Write sådan her:
XE.Write mybytes(0), UBound(mybytes)
Hvis ikke det virker må du sikkert kalde den byte for byte som du selv
foreslog..
For indx = 0 to UBound(mybytes)
XE.Write mybytes(indx),1
Next indx
/Lars
| |
Lars Holm Jensen (25-08-2004)
| Kommentar Fra : Lars Holm Jensen |
Dato : 25-08-04 23:22 |
|
> Dim mybytes() As Byte
> mybytes = StrConv(streng, vbFromUnicode)
>
> Og så kald XE.Write sådan her:
>
> XE.Write mybytes(0), UBound(mybytes)
Hov.. Det er muligt, at du skal gemme UBound(mybytes) i en Long..
Dim mylen As Long
mylen = UBound(mybytes)
og så kald funktionen..
XE.Write mybytes(0), mylen
| |
Lasse Madsen (25-08-2004)
| Kommentar Fra : Lasse Madsen |
Dato : 25-08-04 23:32 |
|
Hej Lars
Det virker perfekt (din første løsning) !
Tusinde tak.
M.v.h.
Lasse
| |
|
|