|
Вопрос # 3 045/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Подскажите пожалуйста, как в поле TMemo начать новую строку, когда вывод идет не строками, а как текст.
Имеется програма транслитерации: символ ентера она находит (translit[chr(13)]:=xxx), но вот чем его заменить, чтобы в поле выводились слова с новой строки?
Код translit[chr(13)]:=chr(13); то в поле TMemo вижу просто черные маленькие квадратики вместо ентеров (так как это системный символ насколько я понимаю).
Или как же другим способом начать новую строку в TMemo, если вывод осуществляется как Memo2.Text:=
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- ButtonT: TButton;
- Memo1: TMemo;
- Memo2: TMemo;
- procedure ButtonTClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.ButtonTClick(Sender: TObject);
- var
- i: integer;
- s,output: string;
- translit: array[char] of string;
- begin
- output:='';
- s:=Memo1.Text;
- translit[' '] := '_';
-
-
-
- ...............
-
- translit[chr(13)]:=chr(13);
-
-
- for i:=1 to Length(s) do
- output := output + translit[s[i]];
- Memo2.Text:=output;
- end;
-
- end.
 |
Вопрос задал: Pokemonchyk (статус: Посетитель)
Вопрос отправлен: 27 июля 2009, 13:56
Состояние вопроса: открыт, ответов: 3.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Pokemonchyk!
надо добавлять два символа - chr(13)+chr(10).
если надо написать длинную строку, то можно так
'line1'#13#10'line2'#13#10'line3'
или
'line1'#$D#$A'line2'#$D#$A'line3'
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 27 июля 2009, 14:14
Оценка за ответ: 5
Комментарий к оценке: спасибо. вариант chr(13)+chr(10) работает. Хоть я и не понял что за символ chr(10), но позже узнаю. Еще раз спасибо!
|
Ответ #2. Отвечает эксперт: Егор
Здравствуйте, Pokemonchyk!
У вас ошибка в том, что не для всех символов вы определили соответствующую транслитеральную :) подстановку. В частности, перевод строки, как правильно отметил Вадим К - это два символа - #10#13, а для символа #13 вы подстановку сделали, а для #10 - нет. Да ещё у вас нет подстановки для букв латинского алфавита, знаков препинания и т.д.
К тому же, лучше вынести формирование массива translit - заполнить его один раз, например, в обработчике события формы onCreate, а потом пользоваться уже готовым массивом, а не заполнять-перезаполнять его при каждом нажатии на клавишу.
Резюмируя :), получим следующий код:
Приложение: Переключить в обычный режим- type
- TForm1 = class(TForm)
- Memo1: TMemo;
- Memo2: TMemo;
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
-
- private
-
- { Private declarations }
- public
- { Public declarations }
- end;
-
- ...
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- i: integer;
- s,output: string;
- begin
- output:='';
- s:=Memo1.Text;
- for i:=1 to Length(s) do
- output := output + translit[s[i]];
- Memo2.Text:=output;
- end;
-
-
- var
- i : integer;
- ch : char;
- begin
-
- translit[ch] := ch;
-
-
-
-
- . . .
-
- end;
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 27 июля 2009, 14:33
|
Ответ #3. Отвечает эксперт: min@y™
Эх, вижу уже ответитили... Но не пропадать же добру?!
Не надо менять символы, не подлежащие транслитерации, и они передадуться в результирующую строку без изменений.
Я взял правила транслитерации из Punto Switcher и написал простой пример. Посмотри. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 27 июля 2009, 14:49
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 27 июля 2009, 15:27; участников в обсуждении: 2.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|