/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Læse Hex værdier fra en database?
Fra : Stefan Kristensen


Dato : 16-03-04 18:00

Hej NG.

I en MS SQL Server 2000 database har jeg en tabel med et varbinary(40) felt.
Nu skal jeg bruge værdien af feltet i VB 60. Jeg har en stored procedure,
der returnerer et recordset med feltet.
Hvis jeg udskriver feltet direkte i VB får jeg en stribe ?.

Hvordan hulen får jeg denne hex værdi i feltet lavet om til en VB streng?

mvh
Stefan



 
 
Beeblebrox (19-03-2004)
Kommentar
Fra : Beeblebrox


Dato : 19-03-04 12:39

Stefan Kristensen wrote:
> I en MS SQL Server 2000 database har jeg en tabel med et varbinary(40) felt.
> Nu skal jeg bruge værdien af feltet i VB 60. Jeg har en stored procedure,
> der returnerer et recordset med feltet.
> Hvis jeg udskriver feltet direkte i VB får jeg en stribe ?.
>
> Hvordan hulen får jeg denne hex værdi i feltet lavet om til en VB streng?

Er det ikke et spørgsmål om at du får en streng som indeholder ascii
værdier der ikke findes i det brugte tegnsæt?

Hvis du gerne vil fremvise ascii værdierne fra strengen i et andet
format har du flere muligheder. Prøv at kalde nedenstående
ShowAsciiValues() med din streng fra databasen.

Public Sub ShowAsciiValues(ByVal sMix As String)
Dim i As Integer
Dim sOutAscii As String
Dim sOutHex As String
For i = 1 To Len(sMix)
sOutAscii = sOutAscii & CStr(Asc(Mid(sMix, i, 1))) & " "
sOutHex = sOutHex & ByteAsHex(Asc(Mid(sMix, i, 1))) & " "
Next i
Debug.Print "------------------------------"
Debug.Print sOutAscii
Debug.Print sOutHex
End Sub

Public Function ByteAsHex(ByVal bAscii As Byte) As String
Dim bHigh As Byte
Dim bLow As Byte
bHigh = (bAscii - (bAscii Mod 16)) / 16
bLow = bAscii Mod 16
ByteAsHex = Chr(IIf(bHigh > 9, bHigh + 54, bHigh + 48)) &
Chr(IIf(bLow > 9, bLow + 54, bLow + 48))
End Function

Disclaimer: Det er noget jeg lige bankede sammen så det kan sikkert
optimeres

Vh,
Claus

Tomas Christiansen (19-03-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 19-03-04 22:14

Beeblebrox skrev:
> Disclaimer: Det er noget jeg lige bankede sammen så det kan sikkert
> optimeres

Meget fint "banket". En lille optimering er måske på sin plads. Denne linie:

> bHigh = (bAscii - (bAscii Mod 16)) / 16

kan forenkeles til:

bHigh = bAscii \ 16

-------
Tomas


Stefan Kristensen (22-03-2004)
Kommentar
Fra : Stefan Kristensen


Dato : 22-03-04 10:42

> > Hvordan hulen får jeg denne hex værdi i feltet lavet om til en VB
streng?
>
> Er det ikke et spørgsmål om at du får en streng som indeholder ascii
> værdier der ikke findes i det brugte tegnsæt?
Tak for hjælpen, men jeg tror mit problem i virkeligheden var et andet.
Jeg løste det ved at tilføje Asc værdien af de enkelte values til en streng:
For I = 0 to 39
MinStreng = Asc(rs("Binaer").Value(I))
Next

Den kan selvfølgelig stadig ikke skrives ud, da det er krypterede data, men
nu kan jeg bruge strengen som input til min dekrypteringsfunktion.

mvh
Stefan



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408875
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste