Gå til innhold

Invoke og streng parametere


Anbefalte innlegg

Heisan

Har følgende kode;

 

   Private Sub ReadCallback(ByVal pArgument As IAsyncResult)
       Dim c As Client = pArgument.AsyncState
       If c.tcp.Connected Then
           Dim i As Integer = c.tcp.GetStream.EndRead(pArgument)
           If i = 0 Then
               Me.Clients.Remove(c)
               Dim d As New Receive(AddressOf ReceiveData)
               Me.ParentControl.Invoke(d, c.Name, APP_DISCONNECT.ToString)
           Else
               Dim Message As String = System.Text.Encoding.ASCII.GetString(c.Buffer, 0, i)
               Dim d As New Receive(AddressOf ReceiveData)
               Me.ParentControl.Invoke(d, c.Name, Message)
               c.tcp.GetStream.BeginRead(c.Buffer, 0, c.Buffer.Length, AddressOf Me.ReadCallback, c)
           End If
       End If
   End Sub

   Private Sub ReceiveData(ByVal pClient As String, ByVal pMessage As String)
       RaiseEvent Received(pClient, pMessage)
   End Sub

 

og så har jeg produsert en streng fra et Clarion program på følgende måte:

SendStr = NORTRIM:AddCard & '|**|' & |
         LOC:Kortnr & '<9>' & |
         LOC:Pinkode & '<9>' & |
         clip(LOC:Kortnavn) & '<9>' & |
         LOC:FraDato & '<9>' & |
         LOC:TilDato

- til info - <9> er CHR(9) altså en TAB og |**| er noe jeg bruker for å skille felter i en record. Men andre ord havner jeg opp med to records fordi jeg bruker SPLIT med '|*|' i første omgang og så gjør jeg en SPLIT på chr(9) på del to av arrayen som lages først.

 

Problemet er derimot at jeg får en exception på INVOKE statementet som sender Message til Receive Data. Noen som kan si meg hvorfor? Er det noen begrensninger i hva slags karakterer man kan ha i en streng som overføres via INVOKE?

 

Exception meldingen sier som følger:

FormatException was unhandled
Inndatastrengen hadde ugyldig format.
Troubleshooting tips:
Make sure your argument are in the right format.
When converting a string to DateTime, parse the string to take the date before putting each variable into the DateTime object.
Get general help for this exception.

o.s.v.

 

 

Ole

Lenke til kommentar
Videoannonse
Annonse
Problemet er derimot at jeg får en exception på INVOKE statementet som sender Message til Receive Data.  Noen som kan si meg hvorfor? Er det noen begrensninger i hva slags karakterer man kan ha i en streng som overføres via INVOKE?

Ettersom strenger i VB.NET er av typen UTF-16, tviler jeg sterkt på at problemet er sistnevnte. I følge feilmeldingen ser det ut til at du gjør en variabelkonvertering fra en streng til en DateTime-datatype, der strengen ikke kan konverteres til en dato/tid. Jeg vil anbefale å isolere ulike deler av koden som du kan tenke deg kan være årsak i problemet. Da kan en mye lettere se hvor problemet ligger.

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...