вставка ртф текста в ричедит

Тема в разделе "Delphi - Система", создана пользователем vital, 5 авг 2006.

Наш партнер Genesis Hackspace
  1. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    вобсчем, нужно вставить в TRichedit текст, простое Lines.add выдает ошибку. Ошибку скорее всего потому, что вставляемый текст имеет примрно следующий формат
    Код (Text):
    text:='самый обычный текст длинна которого неизвестна'+'текст отртфвенный длинна которого неизвестна';
    вот.
    Что бы тут сделать..
     
  2. zubr

    zubr Гость

    Должно работать. Код в студию.
     
  3. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    ну..
    Текст идет с сокета.
    Отправляю примерно так
    Код (Text):
    function GetRTFText(Arich: trichedit): string;
    var
    ss: TStringStream;
    emptystr: string;
    begin
    emptystr := '';
    ss := TStringStream.Create(emptystr);
    try
    ARich.PlainText := False;
    ARich.Lines.SaveToStream(ss);
    Result := ss.DataString;
    finally
    ss.Free
    end;
    end;
    -----------------------
    Serversocket.sendtext('некий текст в опциях введенный юзверем: '+GetRtfText(richedit2); //или ClientSocket...
    на приеме простое richedit2.lines.add(socket.receivetext); Выдает -Line Insertion Error и вставляет весь текст как он есть..{rtf\ansi\...

    Я пробовал удалять 1 и последнюю скобки в от'RTF'венном тексте при посылке но толку не было..

    пс.
    ещё там сообщение смотриться на предмет неких специальных команд, (Де)шифруется, но это врядли на что либо влияет..
     
  4. zubr

    zubr Гость

    Правильно, richedit2.lines.add(socket.receivetext); вставит весь текст как он есть. Чтобы у тебя в RichEdit появился отформатированный текст, сохрани socket.receivetext в файл или поток, а затем загружай в RichEdit2.Lines.LoadFromFile или RichEdit2.Lines.LoadFromStream
     
  5. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    Попробовал в TStringStream..
    Вместо текста вышли всякие кракозябры.

    T:TStringStream;
    msg:=socket.receivetext;
    {операции с msg}
    t:=TStringStream.create(msg);
    richedit.loadfromstream(t);
    t.free;
     
  6. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    в общем, с потока вставляется прекрасный, все тот же RTF..
    к тому же мне надо, что текст который там был до того, тоже оставался.
     
  7. zubr

    zubr Гость

    Текст, который ты получаешь в socket.receivetext, пробовал сохранять в rtf-файл и затем запускать в Worde?
     
  8. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    хм..сейчас попробую..

    результат-
    вот такой вот test.rtf
     
  9. zubr

    zubr Гость

    Попробуй сравни текст до отправки (просматривай его в блокноте, а не в Worde) и после получения. Судя по всему у тебя какая то часть текста при пересылке теряется.
     
  10. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    Просматривал я текст в Wordpad'e..
    Текст идентичен.Перед отправкой я его ещё вывожу в специальном месте, тоже и на приёме.
     
  11. zubr

    zubr Гость

    Ну тогда не знаю..., все должно работать. Вот процедура отображения форматированного текста в ричедите с сохранением, предыдущего текста:
    Код (Text):
    procedure RtfToRichEdit(richedit:TRichEdit; txtfromsocket:string);
    var
    str:TStringStream;
    s:string;
    begin
    str:=TStringStream.Create(txtfromsocket);
    try
    s:=richedit.Lines.Text;
    richedit.Lines.LoadFromStream(str);
    richedit.Lines.Insert(0, s);
    finally
    str.Free;
    end;
    end;
     
  12. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    <kznm! все тот же ртф..vfnm tuj pf yjeu!


    и почему у меня такой талант нарываться на персональные грабли..
     
  13. zubr

    zubr Гость

    А наверно потому, что у тебя где то RichEdit1.PlainText:=True;, если так, поставь в False.
     
  14. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.435
    Симпатии:
    31
    мля, я наверно похож идиота больше чем думаю..
    и в design-time и программно я выставил Plaintext:=false. с самого начала.
     
Загрузка...

Поделиться этой страницей