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 08-09-2006
Avatar de Estefania
Estefania Estefania is offline
Registrado
 
Registrado: may 2006
Posts: 2
Poder: 0
Estefania Va por buen camino
Question ¿Como converitr dato del puerto a decimal?

Hola, necesito que me ayuden a solucionar este problema, tengo un programa que levanta datos desde el puerto com1 y por medio de la siguiente funcion me convierte el dato a un valor string, pero yo kiero convertirlo a decimal en vez de a string, como lo puedo hacer?? aca les dejo el procedimiento que esta funcionando en mi programa, si me escriben la parte de codigo que necesito insertar en este procedimiento me seria de mucha ayuda. Aqui el procedimiento:

Código Delphi [-]
procedure TMainForm.cpDrvReceiveData(Sender: TObject;
 DataPtr: Pointer; DataSize: Cardinal);
var
  i : integer;
  s : string;
begin
  // Convert incoming data into a string
  s := StringOfChar( ' ', DataSize );
  move( DataPtr^, pchar(s)^, DataSize );
  S := Trim(s) + #13 ;
  // Exit if s is empty. This usually occurs when one or more NULL characters
  // (chr(0)) are received.
  while pos( #0, s ) > 0 do
    delete( s, pos( #0, s ), 1 );
  if s = '' then exit;
  // Remove line feeds
  i := pos( #10, s );
  while i <> 0 do
  begin
    delete( s, i, 1 );
    i := pos( #10, s );
  end;
  // Process the buffer line by line. This breaks the buffer block into discreet lines.
  // If you want to act upon individual ID's and data, do it in ProcessReceivedLine routine.
  i := pos( #13, s );
  while i <> 0 do
  begin
    ProcessReceivedLine(Copy(s,1,i)) ; // Process the line
    delete( s, 1, i ); // then delete it.
    i := pos( #13, s );
  end;
end;

Ayuda pro favor!!!

Última edición por dec fecha: 08-09-2006 a las 20:44:01.
Responder Con Cita
  #2  
Antiguo 08-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
A que te referís con "convertirlo a decimal"??

¿a entero? ¿a coma flotante?
¿en que momento?

Si ProcessReceivedLine recibe como parámetro un entero, por ejemplo, podrías cambiar la línea actual por:

Código Delphi [-]
  try
    ProcessReceivedLine(StrToInt(Copy(s, 1, i)));
  except
    on ECovertError do
      ShowMessage('Esta línea se ejecuta si la cadena recibida no es un entero!');
  end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 08-09-2006
Avatar de Estefania
Estefania Estefania is offline
Registrado
 
Registrado: may 2006
Posts: 2
Poder: 0
Estefania Va por buen camino
Me equivoque, quiero recibir el dato en valor ENTERO

Tenes razon, me exprese mal.... quiero recibir el valor en Entero... ya coloque lo que me recomendaste anteriormente y no me afunciono, quieres te te adjunte el codigo funete de la aplicacion completa asi le hechas el ojo y me ayudas????
Responder Con Cita
  #4  
Antiguo 08-09-2006
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
Hola Estefania.
Te tiro algún error con el cambio que te "dijo" jachguate?? Porque deberia funcionar.
Lo que también tenes que cambiar para que te funcione es el tipo de variable que recibe como parámetro la funcion ProcessReceivedLine, ya que antes recibias una cadena de caracteres y ahora un numero entero.

Bytes!!

Por cierto, que equivocado que estaba Arcioneo en este hilo
Responder Con Cita
  #5  
Antiguo 08-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Permiteme un par de preguntas. Lo que recibes por el puerto serie ¿son caracteres?, es decir, si por ejemplo recibes 100 lo que realmente recibes son las letras '1', '0', '0', o por el contrario recibes el byte 100. Si es el primer caso solo tienes que convertir el string en integer tal como te indico jachguate (quizá tengas que quitarle el ultimo carácter el #13 antes de convertirlo), pero si es lo segundo, si los datos se envían como bytes tendríamos que saber cuantos bytes forman cada numero y se tendría que reformar casi todo el procedimiento.
Responder Con Cita
  #6  
Antiguo 08-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Creo que no hace falta que envíes mas código, basta con que indiques si el error ocurre en tiempo de compilación o de ejecución.

Con respecto de lo dicho por seoane (buen punto!) aclarar que yo asumí que el código anterior trabajaba, pero que quería cambiarse.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como pasar de binario a decimal? Javi2 Varios 4 24-03-2008 06:38:11
Como leer un dato en un puerto con cmd? JuanErasmo API de Windows 0 12-08-2006 17:38:23
Como rescato un dato de select ilichhernandez SQL 1 12-07-2006 03:57:48
Separador decimal como coma (,) Investment SQL 2 26-01-2004 11:36:10
Como mostrar decimal en DBGRID andrestsas Varios 2 08-08-2003 20:32:14


La franja horaria es GMT +2. Ahora son las 13:38:58.


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