Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Lazarus: отображение непечатаемых символов в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
Натолкнулся на такую вещь: если многострочный текст из любого наследника стринглиста присвоить тексту TEdit
+
//например так
Edit.Text:= Memo1.Text;

//или так
var i: integer;

  Edit1.Clear;
  if Memo1.Lines.Count > 0 then
  begin
    for i := 0 to Pred(Memo1.Lines.Count) do
      if i < Pred(Memo1.Lines.Count)
        then
          Edit1.Text:= Edit1.Text + Memo1.Lines.Strings[i] + LineEnding
        else
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]);
  end;  


то на винде символы перевода каретки не видны, а вот на Линуксе отображаются
+
Картинка с другого сайта.

Картинка с другого сайта.

Картинка с другого сайта.

Что это, баг лазаревского виджетсета? Или особенности Оси?
=================
Док.

Win7 Ultim x64/Deb 9.1(GNOME, MATE; gtk2) i386:
FB 3.0.2.32703, диалект 3, SS,
Lazarus 1.9(r.56145); FPC 3.1.1 (r.36290), IBX by -Rik-; IBE 2017.4.19.2
8 ноя 17, 16:59    [20937296]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
Andy_OLAP
в Linux 0xD вырезается, а 0xA идет в отображение

интересно, можно штатными средствами IDE "вырезать" 0xA вручную или забить, и заменить перевод каретки каким-нибудь мало используемым символом, типа тильды?
8 ноя 17, 17:03    [20937318]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23102
Док
LineEnding

Посмотри, что в линуксе тут?
8 ноя 17, 17:07    [20937331]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
wadman
Посмотри, что в линуксе тут?

что и должно быть, если ты это имел ввиду (fpc_trunk/rtl/unix/sysunixh.inc)
const
 LineEnding = #10;
8 ноя 17, 17:17    [20937374]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23102
Док, а, всё нормально. Считай это фичей. :) сам же добавляешь...
8 ноя 17, 17:20    [20937383]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
wadman
Считай это фичей. :) сам же добавляешь...

значит, придется тильду рисовать для единообразия :(
8 ноя 17, 17:32    [20937425]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 1177
wadman
Док, а, всё нормально. Считай это фичей. :) сам же добавляешь...

Раз добавляет, то может и не добавлять, например вместо "Edit1.Text:= Edit1.Text + Memo1.Lines.Strings[i] + LineEnding" делать "Edit1.Text:= Edit1.Text + Memo1.Lines.Strings[i] + "; " ".
8 ноя 17, 18:32    [20937700]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемые символы в TEdit  [new]
_Док_
Guest
Andy_OLAP
Раз добавляет, то может и не добавлять, например вместо "Edit1.Text:= Edit1.Text + Memo1.Lines.Strings[i] + LineEnding" делать "Edit1.Text:= Edit1.Text + Memo1.Lines.Strings[i] + "; " ".

Это не я добавляю, Лазарь так делает при
Edit1.Text:= Memo1.Text.

Отсюда и эксперименты. А разделитель, как костыльное решение, можно любой использовать...
8 ноя 17, 18:54    [20937773]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
pit_alex
Member

Откуда:
Сообщений: 618
_Док_,

Edit1.Text := StringReplace(Memo1.Text, #10, #13, [rfReplaceAll]);
9 ноя 17, 10:06    [20939053]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2006
pit_alex,

Тогда уж

Edit1.Text := StringReplace(Memo1.Text, #10, '', [rfReplaceAll]);
9 ноя 17, 14:47    [20940276]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
pit_alex
Member

Откуда:
Сообщений: 618
makhaon,

а если потом обратно в Memo? переносы накроются
9 ноя 17, 15:16    [20940456]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2006
pit_alex,

Memo1.Text := StringReplace(Edit1.Text, #13, #10#13, [rfReplaceAll]);


9 ноя 17, 15:58    [20940603]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
pit_alex
Member

Откуда:
Сообщений: 618
makhaon,

на Linux пробовал? :-)
9 ноя 17, 16:53    [20940770]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
pit_alex
Member

Откуда:
Сообщений: 618
pit_alex,

зачем второй раз делать Replace?
9 ноя 17, 17:00    [20940806]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2006
pit_alex,

в линухе байты другие? :)
9 ноя 17, 17:13    [20940859]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
pit_alex
Member

Откуда:
Сообщений: 618
makhaon,

в линукс будет работать именно так

Edit1.Text := StringReplace(Memo1.Text, #10, #13, [rfReplaceAll]);
9 ноя 17, 17:13    [20940862]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
pit_alex
в линукс будет работать именно так


маладца, спасибо! И правда, работает
+
  Edit1.Clear;
  if Memo1.Lines.Count > 0 then
  begin
    for i := 0 to Pred(Memo1.Lines.Count) do
      if i < Pred(Memo1.Lines.Count)
        then
          {$IFDEF UNIX}
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]) + #13
          {$ELSE}
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]) + #10#13
          {$ENDIF}
        else
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]);
  end;

+
Картинка с другого сайта.

Картинка с другого сайта.
9 ноя 17, 23:32    [20941758]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
ain-2
Member

Откуда:
Сообщений: 633
Док
  Edit1.Clear;
  if Memo1.Lines.Count > 0 then
  begin
    for i := 0 to Pred(Memo1.Lines.Count) do
      if i < Pred(Memo1.Lines.Count)
        then
          {$IFDEF UNIX}
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]) + #13
          {$ELSE}
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]) + #10#13
          {$ENDIF}
        else
          Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]);
  end;


Для удобств в модуле System есть константа sLineBreak.

      if i < Pred(Memo1.Lines.Count)
        then Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]) + sLineBreak
        else Edit1.Text:= Edit1.Text + UTF8Trim(Memo1.Lines.Strings[i]);
10 ноя 17, 06:01    [20942057]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
ain-2,

садись, два. За невнимательность ;)

sLineBreak - это псевдоним LineEnding, на линуксе дает #10 и выводит непечатаемый символ.
10 ноя 17, 07:24    [20942093]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 43214
Док,

это что за подстрока?
#10#13
10 ноя 17, 07:33    [20942099]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
andreymx
это что за подстрока?
#10#13

эта часть кода под винду, верхняя - под линь. Обычная практика в Лазаре при кроссплатформе
10 ноя 17, 09:54    [20942342]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 43214
Док
andreymx
это что за подстрока?
#10#13

эта часть кода под винду, верхняя - под линь. Обычная практика в Лазаре при кроссплатформе
под винду наоборот?
10 ноя 17, 12:36    [20943191]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
andreymx,

читай ветку с первого поста, долго объяснять :)
10 ноя 17, 14:09    [20943644]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 43214
Док,

я нащёт того, что нет в винде такой комбинации
#10#13
есть наоборотная
10 ноя 17, 14:21    [20943720]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: отображение непечатаемых символов в TEdit  [new]
Док
Member

Откуда: Казань
Сообщений: 5129
andreymx,

вот ты о чем :) А какая разница?
10 ноя 17, 16:02    [20944188]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить