Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Como manipulo una cadena de caracteres en esta situacion???? (http://www.forosdelweb.com/f29/como-manipulo-cadena-caracteres-esta-situacion-424720/)

juanpablomonte 11/09/2006 08:24

Como manipulo una cadena de caracteres en esta situacion????
 
Gente necesito auxilio !!!

Resulta que obtengo una cadena de caracteres, desde un aparato, conectado a mi puerto com,y la meto en una variable string.

luego, intento leer los datos de la cadena en una base de datos acces.
El tema esta, en que la cadena que yo quiero evaluar debe tener 79 caracteres, en esos caracteres, desde la posicion 0 hasta el final, yo voy recorriendo y tomando datos, segun la aparicion de espacios en blanco.

Mi problema es que el aparato, me envia las cadenas, muy irregularmente osea me manda aveces una cadena de 240 o mas caracteres, ( osea, varias de las cadenas de 79 en una sola ) o bien, me envia otras veces, cadenas de 40 caracteres, osea casi la mitad de los datos contenidos en la de 79.

entonces como puedo hacer, para unificar la cadena y poder sacar los datos?

SeriketZu 11/09/2006 14:59

La verdad que no se entendí bien la explicación.
Si lo que pasa es que los datos pueden variar de longitud pero siempre están separados por un espacio podés usar la función split, por ejemplo:

Dim datos() as String
datos = split(cadenadecaracteres, " ")

juanpablomonte 11/09/2006 17:39

Gracias por tu ayuda...
mira te explico mas graficamente...

yo necesito hacer lo siguiente

cadena:

1111 22222 33333 44444 55555
variable1= 1111
variable2=2222
etc...

pero que pasa cuando la cadena viene asi...

3333 44444 55555 11111 2222 3333 44444 555
555 1111
2222 3333 44444
5555 1111 22222 33333 4444

.............
Claro que los valores de la cadena no son tan ovios... eso de que sean numeros constantes es solo para el ejemplo.

Queda mas claro ?
El asunto es .. como identifico, sin ver la cadena, las multiples cadenas internas, desde su inicio, hasta su fin... por mas que vengan desparejas, o truncas...

SeriketZu 11/09/2006 20:44

Si en la cadena no hay una palabra o número que identifique que empieza o termina una subcadena, lo veo difícil.
Para poder identificar cuándo termina una subcadena y empieza otra es necesario tener algún caracter o algo que distinga esa división.

foo 11/09/2006 21:46

me parece q solo es cuestion de trabajar con una especie de buffers para ir almacenando los datos faltantes.

juanpablomonte 12/09/2006 05:05

Foo
creo que le pegaste en el clavo

Lo que hice fue reducir el bufer de flujo de entrada del puerto com, y entonces, la cadena que entra es mas chica ahora...

Luego, voy almacenando los datos hasta en una string hasta que llega a tener un length de 79 que es lo que necesito

Hay un cracter que es constante que es una S.. pero siempre viene en distintas posiciones...

Ahora el tema es que todo viene en una sola linea, pero la cadena sigue viniendo trunca
y si empiezo a almacena en el string desde la s en adelante, pierdo la mitad de la cadena anteiror cuando inicia la escucha del puerto ( suponiendo que la primera escucha sea de la mitad de una cadena digamos...)

foo 12/09/2006 13:41

lo que te decia era crear ese buffer en la parte que lees los datos.

void CapturarEntrada()
{
String entrada = "";
String buffer = "";

while (true)
{
entrada = LeerEntrada()

for(int i = 0; i < entrada.Length; i++)
{
if (buffer.length == tamañodelbuffer || entrada[i] == "S")
{
// hacer una llamada asincrona o delegar la tarea a una "hebra"
// con el parametro buffer

buffer = "";
}
buffer = buffer + entrada[i];
}
}
}

juanpablomonte 12/09/2006 15:47

si, eso es una solucion, el unico problema es que no puedo usar unn for, por que los datos, vienen con un evento que se produce cuando hay una entrada en puerto com... y codificando ese evento, es donde yo tomo lo que viene por el puerto
pero con esto que me decis, voy a probar de hacer la pregunta, sin el for... o sea simplemente un if

foo 12/09/2006 15:52

igual no veo el problema, el codigo que puse era algo referencial nada mas

porque no pones un poco de codigo?

juanpablomonte 13/09/2006 09:10

Gracias Foo

Lo que me digiste, me ayudo... hice algo similar tomando como ciclo del bucle, la llamada al evento.

No pongo el codigo, por que tiene muchos objetos que cree yo mismo...
y tienen metodos propios... asi que te meteria mas en problemas...

Te agadezco mucho... mi codigo ya funciona bien
Gracis !!! a Todos


La zona horaria es GMT -6. Ahora son las 09:21.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.