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


Автор: Katyushka 11.9.2008, 14:45
Извините, если я повторяюсь, но в поиске я не нашла ответа на свой вопрос. У меня следующая проблема: необходимо создать 5 потоков без синхронизации, которые должны вывести свой номер в определенную позицию в memo. Номер позиции я считаю, а как по этому номеру вставить в memo я не знаю. И еще вопрос: необходимо, чтобы в строке было 80 символов и всего 20 строк. Помогите пожалуйста, если не трудно. Очень-очень надо!

P.S. Можно ли для этих целей использовать какой-нибудь другой многострочный редактор?

Автор: Alexeis 11.9.2008, 15:20
Можно отсылать сообщения. Они обрабатываются асинхронно. 
Вот таким образом.
Код

    SendMessage(Memo1.Handle, EM_SETSEL, Memo1.SelStart, Memo1.SelStart);
    SendMessage(Memo1.Handle, EM_REPLACESEL, 0, Longint(PChar(Line)));


Line - это строка текста который нужно вставить.

Автор: Poseidon 11.9.2008, 15:26
А ты в курсе чем чреваты обращения к VCL из потоков без синхронизации???

А вообще, ничего сложного. Строка задается так: Memo1.Lines.Strings[x]. А уже в строку вставить символ, думаю, не трудно.

PS. Только нудно удостоверится что необходимая нам строка имеется в memo

Автор: Katyushka 11.9.2008, 15:43
Цитата(Poseidon @ 11.9.2008,  15:26)
А ты в курсе чем чреваты обращения к VCL из потоков без синхронизации???


Я в курсе. А что делать, такое задание...

Добавлено через 2 минуты и 44 секунды
Цитата(Alexeis @ 11.9.2008,  15:20)
Код

    SendMessage(Memo1.Handle, EM_SETSEL, Memo1.SelStart, Memo1.SelStart);
    SendMessage(Memo1.Handle, EM_REPLACESEL, 0, Longint(PChar(Line)));



0 - это я так понимаю позиция в строке? Или я ошибаюсь? А можно туда вставлять переменную?

Автор: Alexeis 11.9.2008, 15:49
Отправка сообщений не требует синхронизации. Главное чтобы не юзали одновременно одну и ту же память. А виндовые компоненты потокобезопасны, потому если обращаться напрямую минуя VCL то все будет ОК.

Автор: VICTAR 12.9.2008, 05:12
Разве обращение Memo1.Handle является потокобезопасным?

Автор: Alexeis 12.9.2008, 08:00
Цитата(VICTAR @  12.9.2008,  04:12 Найти цитируемый пост)
Разве обращение Memo1.Handle является потокобезопасным? 

  чтение переменной smile . Она ж не меняется.

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