| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
pirupic Ens


Registrado: 25 Feb 2004Mensajes: 28Ubicación: Madrid
|
Publicado: Mar 29 Ene, 2008 12:43 pm Asunto: AnsiString.Insert no inserta |
|
|
Saludos a todos.
Tengo un problema con el metodo Insert de AnsiString,
ya que no me inserta la cadena.
| Código: |
iLongitudCadena = CadenaTrama.Length();
CadenaTrama.Insert( cadenaAux, iLongitudCadena );
|
Depurando he observado el error se produce cuando en la cadena que recibo en el AnsiString es la siguente
cadenaTrama = "t78280B2B09C3FDB"
y las demas variables son
cadenaAux = "087DB\r";
y
iLongitudCadena = 18 (0x00000012)
Como podeis observar cadenaTrama mide 16 bytes, pero la funcion Length() me dice que mide 18 bytes, y creo que esa es la razon por la que no me inserta en la nueva cadena.
Ya se que la funcion Insert se supone que si la posicion donde le dices que inserte es mayor que la longitud de la cadena simula un append y la añade al final, pero he probado poniendo
CadenaTrama.Insert( cadenaAux, 50);
y sigue sin insertar.
Agradezco cualquier sugerencia, para este problema ,
Un saludo y gracias
Piru
p.d. Solo por curiosidad, estos datos los voy recibiendo por el puerto serie y necesito ir juntando la cadena hasta que reciba un '\r'.
bye |
|
| Volver arriba |
|
 |
Cri_sys Master


Registrado: 13 Feb 2004Mensajes: 198Ubicación: Maringá, Brazil
|
Publicado: Mar 29 Ene, 2008 2:48 pm Asunto: |
|
|
| Código: |
AnsiString s="t78280B2B09C3FDB";
s.Insert("087DB\r",s.Length());
ShowMessage(s);
|
Ese codigo funciona Perfecto,Lo unico que deberias tener en cuenta es cuando insertas estas insertando antes de la ultima B
quedaria algo asi
t78280B2B09C3FD087DB\rB
si lo quieres de ultimo seria
| Código: |
s.Insert("087DB\r",s.Length()+1);
|
Saludos _________________ Read what I mean, not what I write! |
|
| Volver arriba |
|
 |
pirupic Ens


Registrado: 25 Feb 2004Mensajes: 28Ubicación: Madrid
|
Publicado: Mar 29 Ene, 2008 2:54 pm Asunto: |
|
|
Gracias por la respuesta
aunque creo que tenia un error al definir la longitud
cadenaAux.SetLength( Count + 1);
supongo que la longitud real de la cadena era distinta a la que visualizaba en depuracion.
Un saludo
Piru
bye |
|
| Volver arriba |
|
 |
|