Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2013, 11:52   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию Записать максимальное значение

Данные считываются с com порта и записываются в Memo1, те которые больше нуля записываются в edtNotes.
Данные следующего вида:
Ѓ 0.00 B
Ѓ 0.00 B
Ѓ 0.00 B
Ѓ 0.00 B
Ѓ 15.00?B
Ѓ 14.66?B
Ѓ 9.80?B
Ѓ 9.82?B
Ѓ 9.86?B
Ѓ 0.00 B
Ѓ 0.00 B
Ѓ 0.00 B
Ѓ 0.20 B
Ѓ 1.00 B
Ѓ 0.20 B
Ѓ 0.50 B
Ѓ 0.20 B
Ѓ 0.00 B
Ѓ 0.00 B

Код:
procedure TMainForm.BComPort1RxChar(Sender: TObject; Count: Integer);
var
  S, S1: String;
  f:real;
  s3:real;
  a,b:integer;
  i1,i2: Integer;
    r: Real;
begin

  BComPort1.ReadStr(S, Count);
  if cbCRLF.Checked and (S[Length(S)] = #13) then // Добавление перевода строки
    S := S + #10;
    Memo1.Text := Memo1.Text + S;
 
  s1:=only_numbers(s);
   s1:=StringReplace(s1, '.',',' , [rfReplaceAll]);
  
 i1:=Pos(',',s1);
  if i1>0 then begin
    i2:=PosEx(',',s1,i1+1);
    if i2>0 then s1:=Copy(s1,1,i2-1)+Copy(s1,i2+1,Length(s1)-i2);
  end;
  r:=RoundTo(StrToFloatDef(s1,0),-2);  //результат
  Edit2.Text:=Floattostr(r);
 
i1:=Pos(',',s1);
  if i1>0 then begin
    i2:=PosEx(',',s1,i1+1);
    if i2>0 then s1:=Copy(s1,1,i2-1)+Copy(s1,i2+1,Length(s1)-i2);
  end;
  r:=RoundTo(StrToFloatDef(s1,0),-2);  //результат
  Edit2.Text:=Floattostr(r);

  edtNotes.Text:=edtNotes.Text+Edit2.Text +#9#9+TimeToStr(now) +#13+#10;

  if strtofloat(Edit2.Text)>0 then
begin
  //пишу в базу 
  end;
 if Optionform.RzEdit1.Text<>'' then
 begin
 a:=memo1.Lines.Count;
  if a>Strtoint(Optionform.RzEdit1.Text) then
  memo1.Clear;
 end;

 if Optionform.RzEdit2.Text<>'' then
 begin
 b:=edtNotes.Lines.Count;
  if b>Strtoint(Optionform.RzEdit2.Text) then
 edtNotes.Clear;
 end;

end;
Мне нужно выбирать максимальные значения между нулями.
И еще вопрос почему у меня в edtNotes иногда записывает не 4,35 а
4,3
5
Т.е делит число на части как будто не срабатывает перевод строки, хотя на при считывании данных с эмулятора com порта числа ишет нормально.

Последний раз редактировалось Aleksandr; 21.03.2013 в 11:55.
Aleksandr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не выводит максимальное значение qpuTuJlb Общие вопросы Delphi 5 26.02.2013 05:49
Минимальное и максимальное значение Swatch SQL, базы данных 13 01.11.2012 10:33
Максимальное значение счетчика Tailrag Microsoft Office Excel 0 25.01.2012 11:39
Какое максимальное число можно записать в 1 байте Дима я Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 13.12.2010 16:31
Максимальное значение типа tools Помощь студентам 1 09.01.2010 03:15