Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Question Guardarme una Cadena de texto de un Memo

Hola, estoy creando una aplicación que me tarifica las llamadas de una centralita telefónica, he programado la conexión por el puerto Com y veo las tramas que me manda la centralita en un Memo.
Hasta hay todo correcto, ahora lo que quiero es coger el número del que me llama, para contrastarlo y ver si lo tengo en la base de datos saber quien es etc... Bueno la cuestión es que la central me manda una trama de este tipo:

00 734 041129 1130 204 00209 0000 0 XXXXXXXXX

Las X serian el número de teléfono del que me ha llamado y la central me envia muchas tramas seguidas . con el siguiente codigo consigo colocar el cursor delante de la primera X:
Código Delphi [-]
with Memo1 do
 begin
    // Vamos a la linea 0, Caracter 40,que es el numero de teléfono
    selstart:=perform(EM_LineIndex,0,0)+40;
    perform(EM_SCROLLCARET,0,0);
    // Hacemos focus en el Memo
    SetFocus;
 end;

Con un For recorro todo el número de teléfono y NO se como leer el caracter que va pasando y guardarmelo, mi pregunta es:

¿Como puedo colocarme en la linea de la primera trama no procesada?
y luego ¿Como puedo recorrer todas las lineas(tramas) que tengo en el memo?

No se si alguien podra ayudarme pero de todas formas Gracias.

Un Saludo.
Responder Con Cita
  #2  
Antiguo 02-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No se si te he entendido bien, pero yo no trabajaría directamente soobre el Memo, sino sobre la propiedad Lines (que es un TStrings); Accediendo a Lines puedes hacer:

Código Delphi [-]
  Str := Memo1.Lines[i];   para acceder a cualquier línea (i)

A partir de ahí trabaja con el String Str que te será más sencillo.

Para saber cuantas líneas tienes:

Código Delphi [-]
  NumLineas := Memo1.Lines.Count;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 02-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Hola Neftalí, conforme dices tu como me coloco en el caracter 40 de la linea copio los 9 caracteres siguientes que seran el numero de tlf y me los guardo.

La cuestion es que yo quiero guardarme el numero de telefono de todas las llamadas que reciba, por eso tengo que coger y guardarme las XXXXXXXXX de todas las lineas, En mi base de datos contrastar el telefono nuevo con los que tengo en la base de datos y sino esta introducirlo añadiendole tambien el nombre de la empresa que llama etc...


Gracias por responder tan rapido.
Responder Con Cita
  #4  
Antiguo 02-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si no he entendido mal, en tu memo cada línea es de ésta forma:

00 734 041129 1130 204 00209 0000 0 XXXXXXXXX

de forma que tendrás un memo lleno de líenas de éste estilo:

00 735 445567 1454 204 00209 0000 0 XXXXXXXXX
00 734 046555 1566 204 00209 0000 0 YYYYYYYYY
00 734 041129 1130 204 00209 0000 0 ZZZZZZZZZZ

Para obtener los números debes hacer un bucle:

Código Delphi [-]
for i=0 to (Memo1.Lines.Count - 1) do begin
Str := Memo1.Lines[i];
// Sacar del String el número
.....
end;

Ésto te recorre todas las líneas del Memo, en el ejemplo anterior el bucle se hará tres veces (ya que existen 3 líneas).

Pedona, si no te he entendido bien, y no es ésta la cuestión.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 02-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Estas perdonado hombre lo más seguro es que no me haya explicado yo bien, pero, la cuestión es que no se sacar el numero del String, recorrer las lineas del memo si que se hacerlo lo que no se hacer es sacar del Str que tu has creado el Número.
Responder Con Cita
  #6  
Antiguo 02-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Por eso te explicaba que hay que recorrerlas todas.

Otra opción es ir eliminandolas del Memo a medida que las vayas procesando (extaryendo el número).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 02-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
No me entiendes, lo que te quiero decir es que una vez que has pasado la linea a la variable Str como saco de esa string los caracteres que yo quiera.

Cita:
Empezado por Neftali
Str := Memo1.Lines[i];
// Sacar del String el número
.....
Cuando tu dices //sacar del string el numero
¿Como se hace?

Por ejemplo:
si tengo

Str:=00 734 041129 1130 204 00209 0000 0 XXXXXXXXX
Como consigo yo quedarme solo con las XXXXXXXXX
No se si me habre explicado bien ahora, espero que me entiendas y puedas ayudarme.Muchos Gracias de todos Modos.Un Saludo.

Responder Con Cita
  #8  
Antiguo 02-12-2004
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
Una vez que tengas la linea que quieres en un string, para sacar el numero de telefono podrias usar la siguiente funcion

numerotlf:=copy(lineaguardada,40,9);

40 porque dices que empieza en la 40 el numero y 9 porque su longitud (del numero) es de 9 caracteres.

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #9  
Antiguo 02-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Gracias llonigualker me ha funcionado, ahora mi problema es que en el memo auxiliar que me he puesto para que me saque todos los números que haya solo me saca el de la primera linea.Mi código es este:

Código Delphi [-]
for i:=0 to (Tarificador.Lines.Count- 1) do
begin
Str:=Tarificador.Lines[i];
NumeroTlf:=Copy(Str,40,10);
Mprueba.Lines[i]:=NumeroTlf;
end;

Haber si me podeis decir que es lo que tengo mal por que ya os digo, solo me pone la primera linea de mi tarificador en Mprueba.

Gracias a los dos me habeis ayudado mucho.
Un saludo y a pasar buena tarde.
Responder Con Cita
  #10  
Antiguo 02-12-2004
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
Te falta un Mprueba.addlines o algo asi si quieres añadir lineas al memo temporal o auxiliar.

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #11  
Antiguo 02-12-2004
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
o Mprueba.lines.add

Miralo tu en las propiedades del tmemo.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #12  
Antiguo 07-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Muchisimas gracias Llonigualker solucione el problema, me faltaba añadir las lineas a mi Tmemo auxiliar.


Un Saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:21:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi