Ver Mensaje Individual
  #9  
Antiguo 25-09-2014
nuxbaster nuxbaster is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 13
Reputación: 0
nuxbaster Va por buen camino
Anexo código y vídeo del funcionamiento youtu.be/7XIXTsePNX4
Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, CPort, Vcl.StdCtrls,StrUtils, Vcl.Grids,
  Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ComPort1: TComPort;
    Button2: TButton;
    ListBox1: TListBox;
    Edit1: TEdit;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
 function SumStrings(ts: TStrings): Double;
var
  i: Integer;
begin
  ts.Text:= Trim(ts.Text); // quitar posibles espacios al inicio o fin
  Result:= 0;
  for i:= 0 to ts.Count-1 do
   try
     Result:= Result + StrToFloat(ts[i]);
   except
     raise Exception.Create('Error de conversión: Existe un valor erróneo');
   end;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if ComPort1.Connected then
    ComPort1.Close
  else
    ComPort1.Open;
    Application.MessageBox('El puerto ha sido abierto de forma satisfactoria.','Abierto',0);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Str: String;
begin
  Str := Edit1.Text;
  ComPort1.WriteStr(Str);


end;

procedure TForm1.Button4Click(Sender: TObject);
var
i: Integer;
dados: String;
begin

FOR i := -1 + listbox1.Items.Count  downto 0 DO
BEGIN

IF (listbox1.Selected[i]) THEN
BEGIN
dados := InputBox('Modificando ' + listbox1.Items[i],'Nuevo valor : ' ,listbox1.Items[i]);
IF (Trim(dados) <> '') THEN
listbox1.Items[i] := dados;
END;

END;

end;

procedure TForm1.Button5Click(Sender: TObject);
var
i: Integer;
begin

FOR i := -1 + listbox1.Items.Count  downto 0 DO
BEGIN
IF (listbox1.Selected[i]) THEN
listbox1.Items.Delete(i);
END;

end;

procedure TForm1.Button6Click(Sender: TObject);
var
  vlSumouble;
  i:integer;
begin
  vlSum := 0;

  for i := 0 to ListBox1.Items.Count - 1 do
    vlSum := vlSum + StrToFloat(ListBox1.Items[i]);
    label2.Caption:= FloatToStr(vlSum);
end;

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

  begin

  ComPort1.ReadStr(Str,Count);

    while (length(Str)>1) and (Copy(Str,1,1)='0') do
    delete(Str,1,1);

    if Copy(Str,1,1)='.' then
      Str:= '0'+Str;

      ListBox1.Items.Add(Str);
       label2.Caption:=(FloatToStr(SumStrings(ListBox1.Items))) + ' Kilogramos';





end;
end.
Responder Con Cita