wyswietlenie tekstu w dwoch Memo

0

Witam;
Mam taki problem. Przesyłam sobie do kompa po RS232 pewne informacje i z pomocą komponentu ComPort wyświetlam je w Memo1. Problem w tym ze chciałbym aby część wyswietlanego tektu była wyswietlana w Memo2. Jak sobie z tym poradzic.?
Moja procedutka do odbioru informacji z Com-a i zapisu do Memo1 wyglada tak:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  ComPort1.ReadStr(Str, Count);
  Memo1.Text :=Memo1.Text+Str;
  Memo1.Text := StringReplace(Memo1.Text,' ' , #13#10, [rfReplaceAll]);//zmiana spacji z RSa na entery w Memo
 
  end;

Z góry dzięki za pomoc
Pozdrawiam

0

Zależy jaką część chcesz w innym memo? Wtedy liczysz ilość linii i po prostu przenosisz połowę, a z pierwszego tą połowę usuwasz.

0

Własnie chodzi o to ze miejsce od ktorego bym chcial przenosic nie jest stale, dlatego chciałbym przenosic od konkretengo znaku wyslanego przez port rs232..

0

poczytaj o pos, copy, delete

0

Napisalem zatem tak:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  Str,S: String;
  i,j : Integer;
begin
     ComPort1.ReadStr(Str, Count);

      Memo1.Text :=Memo1.Text+Str;
      Memo1.Text := StringReplace(Memo1.Text,' ' , #13#10, [rfReplaceAll]);//zmiana spacji z RSa na entery w Memo
      j:=Length(Memo1.Text);//dlugosc stringa
      i:=pos('P',str);//od tego momento wyswietlimy w memo2
      //ShowMessage(IntToStr(i));
      S:=copy(str,i,j) ;//kopiujemy od znaku "P" do konca stringa
      Memo2.Text :=Memo2.Text+S;//zapisujemy do Memo2
      Memo2.Text := StringReplace(Memo2.Text,' ' , #13#10, [rfReplaceAll]);

  end;

i niestety w memo2 dalej wyswietlana jest taka sama zawartosc co w memo1
w ogole probowalem wyswietlic w okienku ShowMessage(IntToStr(i)); wartosc zmiennej "i". Okienko to wyświetla sie 2 razy najpierw z wartoscia 0 pozniej z wartoscia 156 i ta liczba jest poprawna. Po wyswietleniu ShowMessage(IntToStr(i)); w drugim Memo pojawia sie ten tekst ktory chcialem, ale gdy je wykomentuje to znowu w obu jest to samo.
Dlaczego tak sie dzieje.?

0

Jeżeli w str jest litera 'P' (i>0) to do Memo2.Text dodajesz fragment str od pozycji litery 'P', Length(Memo1.Text) znaków.
Jeżeli w str nie ma litery 'P' (i=0) to do Memo2.Text dodajesz fragment str od początku, Length(Memo1.Text) znaków.
Czyli do Memo2.Text zawsze coś dodajesz.
Przemyśl to sobie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1