Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Memo - оригинальный текст


Автор: MrRadu 21.4.2013, 00:48
Толи я дурак то ли лыжи не едут.
Задам вопрос по простому, 
есть текст, есть Memo, загружаю текст в Memo 
Код

Memo1.Text:=MyText;

Текст загружается в одну линию. 
Как загрузить в memo текст в оригинальном варианте? со всеми переносами строк. 

Пишут что нельзя. А где то пишут что можно, но не пишут как.

Текст который я получаю, сначала находиться в формате TStrings
Соответственно в мемо вывожу так
Код

Memo1.Text:=MyText.Text;

delphi 2010

Автор: northener 21.4.2013, 01:48
Цитата(MrRadu @  21.4.2013,  00:48 Найти цитируемый пост)
Задам вопрос по простому, 
есть текст, есть Memo, загружаю текст в Memo 

Memo1.Text:=MyText;

Текст загружается в одну линию. 

И это значит "по простому"?
А что такое MyText? 

Автор: DarkProg 21.4.2013, 10:10
Цитата(MrRadu @  21.4.2013,  00:48 Найти цитируемый пост)
Как загрузить в memo текст в оригинальном варианте? со всеми переносами строк. 

А в тексте есть переносы строк? Если их нет, то и отображаться они не будут.

Автор: MrRadu 21.4.2013, 13:34
Цитата(DarkProg @ 21.4.2013,  10:10)
Цитата(MrRadu @  21.4.2013,  00:48 Найти цитируемый пост)
Как загрузить в memo текст в оригинальном варианте? со всеми переносами строк. 

А в тексте есть переносы строк? Если их нет, то и отображаться они не будут.

Есть. Если я затем напишу
Label1.Caption:=Memo1.Text;
 
То он выведет мне текст в оригинале, со всеми переносами.

Добавлено через 5 минут и 55 секунд
Цитата(northener @ 21.4.2013,  01:48)
Цитата(MrRadu @  21.4.2013,  00:48 Найти цитируемый пост)
Задам вопрос по простому, 
есть текст, есть Memo, загружаю текст в Memo 

Memo1.Text:=MyText;

Текст загружается в одну линию. 

И это значит "по простому"?
А что такое MyText?

По просто, значит без всех моих лишних действий.

Пожалуйста, не по простому

Код

text:=Form2.IdHTP1.Get('ЗАПРОС'); // делаю get запрос
sl:=TStringList.Create; // 
sl.Assign(url.ParsXMLArr(text,'text')); // парсю данные через свой парсер. 
mmo1.Text:=(sl.Text); //полученные данные вывожу  мемо
L_3.Caption:=form8.mmo1.Text; // и вывожу их из мемо в Label, просто чтобы посомтреть оригинал текста.
FreeAndNil(sl);


 как вывести оригинальный текст в Memo, со всеми переносами строк.
MyText - это обычный текст.

Возможно не правильно делаю. Буду рад если скажете как.

Автор: Poseidon 21.4.2013, 15:19
Цитата(MrRadu @  21.4.2013,  13:34 Найти цитируемый пост)
MyText - это обычный текст.

MrRadu, разберись все же сам, что у тебя и где. Лично я вижу:
Цитата(MrRadu @  21.4.2013,  00:48 Найти цитируемый пост)
Memo1.Text:=MyText;

Цитата(MrRadu @  21.4.2013,  00:48 Найти цитируемый пост)
:Memo1.Text:=MyText.Text;

В первом случае MyText - это явно текст. А вот во втором - это явно TStringList. Едем дальше, ты получаешь текст из ParsXMLArr. Что там? Каким образом расставляются переносы? Что вообще дает функция в результат? Почему ты используешь  sl.Assign, если можно либо sl.AddStrings, либо sl.Add?

Цитата(MrRadu @  21.4.2013,  13:34 Найти цитируемый пост)
text:=Form2.IdHTP1.Get('ЗАПРОС'); // делаю get запрос
sl:=TStringList.Create; // 
sl.Assign(url.ParsXMLArr(text,'text')); // парсю данные через свой парсер. 
mmo1.Text:=(sl.Text); //полученные данные вывожу  мемо
L_3.Caption:=form8.mmo1.Text; // и вывожу их из мемо в Label, просто чтобы посомтреть оригинал текста.
FreeAndNil(sl);

Если у тебя sl: TStringList, то в memo это дело лучше добавлять как mmo1.Lines.AddStrings(sl)

Автор: Чучмек 21.4.2013, 16:06
Не мудри.
Код

Memo1.Lines:=MyStrings;


Добавлено через 2 минуты и 15 секунд
ps В memo перенос строки #13#10, а в TStringList #13,#10,#13#10

Автор: lollollollol 21.4.2013, 20:31
А я думаю всё проще, у тебя текст имеет переносы строк как в  *nix , то есть символ #10. Виндосовский перенос строк это #13#10.
Сделай в строке замену #10 на #13#10 и проблем не будет.

Добавлено @ 20:32
извиняюсь за двойной ответ, недочитал топик до конца преждем чем дать ответ


Вот так сделай

Код

Memo1.Text:=AnsiReplaceStr(MyText.Text, #10, #13#10);

Автор: Poseidon 22.4.2013, 00:23
Цитата(Чучмек @ 21.4.2013,  16:06)
Не мудри.
Код

Memo1.Lines:=MyStrings;


А если там 5 get-запросов и 5 раз надо добавлять ответ в memo? ИМХО AddStrings использовать правильнее.

Автор: northener 22.4.2013, 01:17
Цитата(lollollollol @  21.4.2013,  20:31 Найти цитируемый пост)
А я думаю всё проще, у тебя текст имеет переносы строк как в  *nix , то есть символ #10. Виндосовский перенос строк это #13#10

Соглашусь пока именно с этим. С поправкой что #13#10 это не "Виндосовский перенос", а нормальный перенос.

Автор: MrRadu 25.4.2013, 23:42
Цитата(lollollollol @ 21.4.2013,  20:31)
А я думаю всё проще, у тебя текст имеет переносы строк как в  *nix , то есть символ #10. Виндосовский перенос строк это #13#10.
Сделай в строке замену #10 на #13#10 и проблем не будет.

Добавлено @ 20:32
извиняюсь за двойной ответ, недочитал топик до конца преждем чем дать ответ


Вот так сделай

Код

Memo1.Text:=AnsiReplaceStr(MyText.Text, #10, #13#10);

Спасибо. Помогло.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)