Hur tar man bort linefeed och carrier return i en sträng? Vad sägs om att läsa förbi chr(10) & chr(13) och sedan börja nästa inläsning därefter? Eller läs in i en "slasksträng" som du rensar när du kommer till nästa stopp? Eller lite enklare, detta borde också fungera: Jo, helt riktigt. Men två saker att tänka på: Tag bort line feed och carrier return
Jag tar in data via en streckkodsläsare och i mitt program använder jag:
Do
DoEvents
buffer$ = buffer$ & MSComm1.Input
Loop Until InStr(buffer$, vbCrLf)
scanner.Text = buffer$
I detta läge visas läst kod i rutan scanner.text, men jag vill få bort de onödiga tecknen när jag sedan skall fortsätta att bearbeta inläst data.
/fredrikSv: Tag bort line feed och carrier return
<code>
Do
DoEvents
buffer$ = buffer$ & MSComm1.Input
Loop Until InStr(buffer$, vbCrLf)
scanner.Text = buffer$
Do
DoEvents
' läs in nästa tecken
strSlask = MSComm1.Input
Loop While strSlask = Chr(10) Or strSlask = Chr(13)
' överför slasksträngen till buffer$ (det senaste tecknet)
buffer$ = strSlask
' fortsätt inläsning, eller lägg in "felkod" för om MSComm är tom
</code>
Hoppas det kan vara till någon hjälp.
/EESv: Tag bort line feed och carrier return
<code>
sträng=Replace(sträng,Chr(10),"")
sträng=Replace(sträng,Chr(13),"")
</code>
/JohanSv: Tag bort line feed och carrier return
Replace förutsätter att du redan har all data inläst i strängen.
Replace är inte direkt snabbaste lösningen, vilket ju är en nackdel på nåt som kanske ska köras ganska ofta.
/EE