Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por CM6ISG Ver Mensaje
...
Ahora #POX #SQX #EMX #FTXXXXXXX #FRXXXXXXX fíjate en el detalle te puse (X) ese dato varia en depende de la frecuencia del radio, modo potencia, etc.

Lo otro seria como cambio ShowMessage(lCampos.Text); en su lugar necesito 5 variables con cada una de sus cadenas.
Ejemplo:

Power:=(‘POX’)
Qsl:=(‘SQX’)
Modo:=(‘EMX’)
FTX:=(‘XXXXXXX’)
FTR:=(‘XXXXXXX’)
Si deseas incluir las cadenas 'FT' y 'FR', sólo tenes que cambiar el valor de inicio en la función Copy. Y para pasar a variables asignar los valores del StringList:
Código Delphi [-]
...
    ix:= lCampos.Count-1;
 
    // Incluir 'FT' y 'FR'
    lCampos[ix-1]:= Copy(lCampos[ix-1], 1, MaxInt);
    lCampos[ix]  := Copy(lCampos[ix]  , 1, MaxInt);

    // Asignar a variables independientes
    Power:= lCampos[0];
    Qsl  := LCampos[1];
    Modo := lCampos[2];
    FTX  := lCampos[3];
    FTR  := lCampos[4];  
 ...
Pero si es factible la reutilización de esas variables tal vez te convenga encapsularlas en un registro. Eso te permitiría enviar todos los valores en un solo parámetro, como por ejemplo:
Código Delphi [-]
...
type
  TPortValues = record
    Power: string;
    Qsl  : string;
    Modo : string;
    FTX  : string;
    FTR  : string;
  end;

procedure ShowValues(TS: TStrings; pv: TPortValues);
begin
  TS.Add(pv.Power);
  TS.Add(pv.Qsl);
  TS.Add(pv.Modo);
  TS.Add(pv.FTX);
  TS.Add(pv.FTR);
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  DLM = #13#10;
var
  Str: string;
  ix: Integer;
  lCampos: TStrings;
  pv: TPortValues;
begin
  Str:= '#PO0' + DLM + '#SQS' + DLM + '#EM0' + DLM + '#FT0715000' + DLM + '#FR0711200';
  lCampos:= TStringList.Create;
  try
    ExtractStrings(['#'],[' '], PChar(Str), lCampos);

    ix:= lCampos.Count-1;
    lCampos[ix-1]:= Copy(lCampos[ix-1], 1, MaxInt);
    lCampos[ix]  := Copy(lCampos[ix]  , 1, MaxInt);

    pv.Power:= lCampos[0];
    pv.Qsl  := LCampos[1];
    pv.Modo := lCampos[2];
    pv.FTX  := lCampos[3];
    pv.FTR  := lCampos[4];

    ShowValues(ListBox1.Items, pv);
  finally
    lCampos.Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 02-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola CM6ISG.
Cita:
Empezado por CM6ISG Ver Mensaje
...
A la hora de compilar me da el siguiente error

Project Catsimulado.exe raised exception class EStringListError with message ‘List index out bounds (1)’. Process stopped. Use Step or run to continue.
El error que mencionas es debido a que intentas acceder a una posición inexistente de la lista. Es muy probable que sea debido a un cambio en el formato de la línea recibida y no contemplado en el caso que has planteado.

Lo primero es ver que valor contiene la cadena, Str, que obtuviste en la línea
Código Delphi [-]
  ComPort1.ReadStr(Str, Count);
eso lo podes hacer con un simple ShowMessage.

Lo segundo y principal es verificar que no estes indizando posiciones inexistentes, eso lo podes verificar del siguiente modo:
Código Delphi [-]
...
  ExtractStrings(['#'], [], PChar(Str), lCampos);
  ShowMessage(IntToStr(lCampos.Count-1));
Si el valor mostrado es menor a 4, valor que utilizas en la línea:
Código Delphi [-]
 FTR := Copy(StrList[4],3,Length(StrList[4]));
se producirá ese error. Si es menor a 3 será en la anterior y así sucesivamente.

Un caso que produciría el error que mencionas se puede ver en este ejemplo:
Código Delphi [-]
  Str:= '#PO0' + #13#10 + '#SQS' + #13#10 + '#EM0' + #13#10 + '#FT0715000';
Como surge a simple vista luego de
Código Delphi [-]
  ExtractStrings(['#'],[' '], PChar(Str), lCampos);
obtendremos 4 cadenas que serán agregadas en el TStringList en las posiciónes 0,1,2,3; cuando hagas referencia a lCampos[4]... Piff !!!

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 02-03-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
CM6ISG,

Cita:
Empezado por CM6ISG
...cuando fui a implementarlo entre las propiedades y funciones del ComPort que tengo no encuentro (Output_CportLib)...Use ComPort1.ReadStr, que la que he probado y me funciona...
Cita:
Empezado por CM6ISG
...A la hora de compilar me da el siguiente error : Project Catsimulado.exe raised exception class EStringListError with message ‘List index out bounds (1)’. Process stopped. Use Step or run to continue...


Te comento:

1- Output_CportLib es una constante creada para simular la lectura de un Puerto Serial, no forma parte de la librería ComPort Library.

2- Para resolver el error List index out bounds, te sugiero hacer un debug de tu aplicación y seguir las indicaciones del Msg #7.

Espero sea útil

Nelson.
Responder Con Cita
  #4  
Antiguo 10-03-2015
CM6ISG CM6ISG is offline
Registrado
NULL
 
Registrado: feb 2015
Posts: 4
Poder: 0
CM6ISG Va por buen camino
Saludos, disculpen por la demora en responder, es que he estado corto de tiempo.

bueno hise las prueba que me recomendaron ya que no logro que me funcione, aclaro que tampoco so muy esperto en programacion y estoy muy agradecido de ustedes por su efuerso

aqui va el codio que tengo montado ahora y debajo adjunto foto de los resultado espero que me puedan ayudar en esto Gracias una ves mas...


Código Delphi [-]
unit simulacion;
 interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls, CPort;

  type 
 TForm1 = class(TForm)  
 Memo1: TMemo;
 Edit1: TEdit;
 Edit2: TEdit;
 Edit3: TEdit;
 Edit4: TEdit;
 Edit5: TEdit;  
 Edit6: TEdit;  
 Label1: TLabel;   
 Label2: TLabel; 
 Label3: TLabel;  
 Label4: TLabel;
 Label5: TLabel; 
 Label6: TLabel;  
 Label7: TLabel;   
 Button1: TButton;    
 ComPort1: TComPort;    
 procedure ComPort1RxChar(Sender: TObject; Count: Integer);   
 private     { Private declarations }   
 public     { Public declarations }   
 end;  
 var  

 Form1: TForm1;  
 implementation  
{$R *.dfm}  

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);   

var    
StrList: TStringList; 
Power, Qsl, Cadena, Modo, FTX, FTR, Str : String;  

begin    
ComPort1.ReadStr(Str, Count);   
Cadena:= cadena + Str;    
Memo1.Text:= Str;    
Edit1.Text:= edit1.Text + cadena;
StrList := TStringList.Create;
ExtractStrings(['#'], [ ], PChar(Str), StrList);
ShowMessage(StrList.Text); 


 {Power := StrList[0];
  Qsl := StrList[1];   
  Modo := StrList[2];   
  FTX := Copy(StrList[3],3,Length(StrList[3])); 
  FTR := Copy(StrList[4],3,Length(StrList[4]));    
  Memo1.Text := Str;    
  Edit1.Text := Str;     
  Edit2.Text := Power;    
  Edit3.Text := Qsl;    
  Edit4.Text := Modo;    
  Edit5.Text := FTX;    
  Edit6.Text := FTR; }     
  StrList.Free;    

end;  
end.
Imágenes Adjuntas
Tipo de Archivo: jpg primera ventana.JPG (28,4 KB, 3 visitas)
Tipo de Archivo: jpg Segunda Ventana.JPG (35,3 KB, 6 visitas)

Última edición por CM6ISG fecha: 10-03-2015 a las 00:55:04. Razón: Arreglando Etiqueta codigo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 puedo cortar un string? avrils Varios 2 07-03-2011 22:24:12
¿Como puedo cortar el form show? silvana Varios 1 05-08-2008 15:30:29
Cortar cadenas por la derecha VRO Varios 4 22-09-2004 16:30:38
Como cortar filtrado miguelb Varios 4 28-11-2003 17:02:57
como cortar texto de un edit superhopi Impresión 1 10-06-2003 13:03:03


La franja horaria es GMT +2. Ahora son las 19:18:16.


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