Gå til innhold

[Løst]Sette streng med Chr(0) på utklippstavla


Anbefalte innlegg

Jeg har ganske enkelt et problem med tegnet chr(0). Dersom jeg prøver å sette det på utklippstavla, bryter den resten av strengen. Noen som har noen råd?

 

Her er koden:

Private Sub cmdCopy_Click()

 

Dim tmpStr As String, tmpOut As String, tmpUni As Variant

tmpStr = txtOutput.Text 'txtOutput.Text begynner alltid med 03 00 03 00 00 00 om det er til noen hjelp

 

tmpStr = Replace(tmpStr, " ", "") 'Fjerner alle mellomrom

Do Until tmpStr = ""

tmpOut = tmpOut & Chr(CDec("&H" & Left(tmpStr, 2))) 'Henter ut de første to tallene og konverterer dem til HEX og legger dem til utdatastrengen

tmpStr = Right(tmpStr, Len(tmpStr) - 2) 'Fjerner de samme to tegnene fra den midlertidige variabelen

Loop

 

Clipboard.Clear 'Tømmer utklippstavla

Clipboard.SetText tmpOut 'Setter teksten på utklippstavla

 

End Sub

 

Strengen som settesskal bli noe sånt som «» dersom den limes inn i f.eks. Notepad. Dersom det limes inn i en HEX-editor skal det være noen chr(0) i mellom -ene. Problemet er at kun den første -en dukker opp. Resten kuttes bort fordi jeg bruker chr(0) i strengen.

Endret av 9E2
Lenke til kommentar
Videoannonse
Annonse

Chr(0) blir visst ofte/nesten alltid brukt til å terminere en streng. Det er det som er problemet. Jeg skal kopiere streng i HEX-format, men annenhvert tegn er chr(0). Slik ser strengens start ut: chr(3) & chr(0) & chr(3) & chr(0) & chr(0) & chr(0). Hva som kommer etter varierer etter hva brukeren selv ønsker. Dersom jeg skriver dette inn i VC++ sin Binær-/HEX-editor og kopierer det til Notepad, dukker det opp riktig (bortsett fra at chr(0)-ene har blitt borte). Dersom jeg limer dette inn i en annen HEX-editor, får den med seg chr(0)-ene. Dersom jeg bruker Clipboard.GetText, får den med seg Chr(0)-ene. Det virker som om Clipboard.SetText terminerer ved chr(0), mens Clipboard.GetText ikke terminerer ved chr(0).

 

Programmet er ment som et «mellomledd» til hex-editorer og trenger derfor støtte for å kopiere chr(0)...

 

edit: Skrev «null» i stedet for «chr(0)» ved en feiltakelse

Endret av 9E2
Lenke til kommentar

Alle strings termineres med Chr(0) også VB strings, men dette er kun for å være kompatibelt med ANSI C programmer (som interne windows funksjoner) fordi .NET strings sin størrelse er satt med en forløpende integer (tror det er 16-bit, men er ikke helt sikker)

 

Svaret er å enten slette nullene, eller lagre verdien som et binært objekt.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...