|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
Мемо
|
|
Автор |
novak11 (непознат) |
Публикувано | 08.11.13 15:47 |
|
Здравейте, искам да управлявам мемо с текста в него. При зареждането на текста от стринг s например при срещането на символа | да го изтрие и да добави нов ред; при срещане на PFOTO: стрингът след него да зарежда картинка в image компонента. За първото примерно пробвах това, но не става:
s := ListItem.SubItems[7];
for i := 0 to length(s) do Begin
if s <> '|' then meKomentar.Lines.Append(s)
else meKomentar.Lines.Add('');
end;
Как може да се осъществят тези неща? Дали е по-добре при самото попълване на мемото на проверявам за тези символи или първо да попълня мемото и после да изследвам ред по ред.
| |
Тема
|
Re: Мемо
[re: novak11]
|
|
Автор |
Timo (собствен ник ) |
Публикувано | 08.11.13 16:59 |
|
дай малко код
Успехът се гради на знания и собствена религия!
| |
|
Ами разгледай StringReplace функцията и я ползвай, когато променяш Memo-то.
Ама по-добре работи с RichEdit, защото Мемо е ограничено до около 32000 символа.
function StringReplace(const S, OldPattern, NewPattern: string; Flags: ReplaceFlags): tring;
Редактирано от NikB на 11.11.13 10:43.
| |
Тема
|
Re: Мемо
[re: NikB]
|
|
Автор |
novak11 (непознат) |
Публикувано | 11.11.13 13:25 |
|
Според теб дали е по-добре при самото попълване на мемото на проверявам за тези символи или първо да попълня мемото и после да изследвам ред по ред? RichEdit не намерих в Lazarus.
| |
|
1. За попълване/проверка: зависи как върви работата
- ако бързо идват много редове и с това завършва запълването, по-добре е да ги добавиш в един стринг ( с разделители CR+LF, т.е. #$0D#$0F), след това да направиш замяната и накрая да напишеш Memo.Text := стринга.
- ако от време на време идват единични редове - замяната ще я правиш преди попълването.
2. Не съм се занимавал с Лазаррус, но RichEdit е Win контрола и няма начин да липсва - може да се казва нещо друго.
| |
Тема
|
Re: Мемо
[re: NikB]
|
|
Автор |
novak11 (непознат) |
Публикувано | 05.12.13 15:05 |
|
Ето това:
Form1.meKomentar.Text := StringReplace(s,'|',#$0D,[rfReplaceAll]);
върши работата! Много благодаря!
Редактирано от novak11 на 05.12.13 15:43.
| |
Тема
|
Re: Мемо
[re: NikB]
|
|
Автор |
novak11 (непознат) |
Публикувано | 09.12.13 16:37 |
|
"по-добре е да ги добавиш в един стринг ( с разделители CR+LF, т.е. #$0D#$0F)"
Тези разделите не са съвсем така. Излиза само първия, #$0D. Другия, който е нещо подобно на: <--| , мисля съответства на Ctrl+Enter и отива на нов ред, не е този символ. Би ли казал кой е кода на другия символ? В Character Maps не мога да го намеря. Трябва да заменя цялата двойка едновременно, защото после като го запиша във файл, отива на нов ред и после като го чета обратно в ListView излизат на толкова редове, колкото са в мемото, а трябва всичко да е на един ред, разделен с '|'. Вижда се само при запис във файл.Редактирано от novak11 на 09.12.13 16:42.
| |
|
А, LineFeed (LF) e с код 10 (0x0A, щестнадесетично) - онова 0F e печатна грешка
| |
Тема
|
Re: Мемо
[re: NikB]
|
|
Автор |
novak11 (непознат) |
Публикувано | 10.12.13 11:32 |
|
Много благодаря! Сега вече стана точно както го исках.
| |
Тема
|
Re: Мемо
[re: NikB]
|
|
Автор |
novak11 (непознат) |
Публикувано | 11.12.13 14:59 |
|
Като копирам текст примерно от форума или с уеб адрес, пак ми го изкарва на повече редове при запис, макар че в ListView е наред. Да не би да има още някой друг символ в уеба, който да трябва да изтривам?
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|