Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 01:05   #1
Richard22
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 22
Стрелка str+str2+str3=белиберда

Есть у меня функция переделывающая bmp в rtf , помимо етого я написал прцедуру которая должна в тексте все "" заменить на графические смайлики, но в конце концов у меня все "" заменились на длинные коды rtf файлов в RxRichEdit, функция bmpTOrtf работает правельно!
Код:
procedure TOtprav.Execute;
var
  i,p,w:integer;
  str,str2,str3,str4:string;
begin
  for i:=0 to form1.Memo2.Lines.Count do
   begin
    str := form1.Memo2.Lines.Strings[i];
    w:=length(str);
    for p:=1 to w do
     begin
      if (str[p]=':') and (str[p+1]=')') then
       begin
        delete(str,p,2);
        str3:=copy(str,1,p);
        str4:=copy(str,p,w);
        str2:=BitmapToRTF(form3.Image1.Picture.bitmap);
        str:=str3+str2+str4;
       end;
     end;
    form1.RxRichEdit1.Lines.add(str);
   end;
end;
если в строчке выделенной красным оставить только str2 то смайлик отобразиться в графичю режиме! И вот я не пойму почему RxRichEdit так делает
Richard22 вне форума Ответить с цитированием
Старый 17.05.2010, 07:04   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Richard22 Посмотреть сообщение
функция bmpTOrtf работает правельно!
Не правильно . Покажи код функции, наверняка она вставляет один смайлик, и ее нельзя применять для кучи смайлов .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.05.2010, 08:49   #3
Richard22
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 22
По умолчанию

вот она функция
Код:
function BitmapToRTF(pict: TBitmap): string ;
var
bi, bb, rtf: string ;
bis, bbs: Cardinal;
achar: ShortString;
hexpict: string ;
I: Integer;
begin
GetDIBSizes(pict.Handle, bis, bbs);
SetLength(bi, bis);
SetLength(bb, bbs);
GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^);
rtf := '{\rtf1 {\pict\dibitmap0 ' ;
SetLength(hexpict, (Length(bb) + Length(bi)) * 2 );
I := 2 ;
for bis := 1 to Length(bi) do
begin 
achar := IntToHex(Integer(bi[bis]), 2 );
hexpict[I - 1] := achar[ 1 ]; 
hexpict[i] := achar[ 2 ];
Inc(I, 2 ); 
end ;
for bbs := 1 to Length(bb) do 
begin
achar := IntToHex(Integer(bb[bbs]), 2 ); 
hexpict[I - 1] := achar[ 1 ];
hexpict[i] := achar[ 2 ]; 
Inc(I, 2); 
end ;
rtf := rtf + hexpict + ' }}'; 
Result := rtf; 
end;
Richard22 вне форума Ответить с цитированием
Старый 17.05.2010, 08:59   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Угу. Точно не уверен, но, ИМХО, ты формируешь полноценный rtf. Попробуй без заголовка
Код:
rtf := '{\pict\dibitmap0 ' ;
и в конце
Код:
 rtf := rtf + hexpict + ' }';
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.05.2010, 09:17   #5
Richard22
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 22
По умолчанию

О благодарю вас!!
да но оно не совсем будет роботать, нужно помимо этого сделать так
Код:
str:='{\rtf1'+str3+str2+str4+'}';
Richard22 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
strcpy(str, strlen(""), "") - error! nazavrik Общие вопросы C/C++ 2 09.02.2010 17:21
Str to Real и Real to Str Zeraim Общие вопросы Delphi 4 27.11.2008 01:07
отличие char* str ="..." от char ...[]="..." StarWorm Общие вопросы C/C++ 2 20.11.2008 08:48
int to str andrey4623 Общие вопросы C/C++ 2 04.02.2008 17:44