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

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

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 08:56   #91
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

Ребята помогите плз, со смайликами никак не магу организовать вставку смайликов в RxRichEdit. Вот код какой я использую для этого
Код:
private
    { Private declarations }
  public
    { Public declarations }
  function bitmaptortf(pict:tbitmap):string;
  end;
 .............................
function TForm1.bitmaptortf(pict:tbitmap):string;
var
bi,bb,rtf:string;
bis,bbs:cardinal;
achar:shortstring;
hexpict:string;
ii:integer;
begin
getdibsizes(pict.Handle,bis,bbs);
setlength(bi,bis);
setlength(bb,bbs);
getdib(pict.Handle,pict.Palette,pchar(bi)^,pchar(bb)^);
rtf:='{rtf1{pictdibitmap';
setlength(hexpict,(length(bb)+length(bi))*2);
ii:=2;
for bis:= 1 to length(bi) do
 begin
  achar:=format('%x',[integer(bi[bis])]);
  if length(achar)=1 then
  achar:='0'+achar;
  hexpict[ii-1]:=achar[1];
  hexpict[ii]:=achar[2];
  inc(ii,2);
 end;
for bbs:=1 to length(bb) do
 begin
  achar:=format('%x', [integer(bb[bbs])]);
  if length(achar)=1 then
  achar:='0'+achar;
  hexpict[ii-1]:=achar[1];
  hexpict[i]:=achar[2];
  inc(i,2);
 end;
rtf:=rtf+hexpict+'}}';
result:=rtf;
end;
............

* первый вариант вызова вставки смайлика в RxRichEdit2
procedure TForm1.BitBtn6Click(Sender: TObject);
var
ss:tstringstream;
bmp:tbitmap;
begin
bmp:=tbitmap.Create;
bmp:=Image6.Picture.Bitmap;
//try
//bmp.Assign(image6.Picture.Bitmap);
ss:=tstringstream.Create(bitmaptortf(bmp));
//try
RxRichEdit2.PlainText:=False;
RxRichEdit2.StreamMode:=[smselection];
RxRichEdit2.Lines.LoadFromStream(ss);
//RxRichEdit2.StreamMode:=[];
//RxRichEdit2.Lines.SaveToFile('rich.rtf');
//finally
ss.Free;
//end;
//finally
bmp.Free;
//end;
end; 

*или вот такой вариант вызова вставки смайлика в RxRichEdit2
procedure TForm1.Image6Click(Sender: TObject);
var
ss:tstringstream;
bmp:tbitmap;
begin
bmp:=tbitmap.Create;
try
bmp.Assign(image6.Picture.Bitmap);
ss:=tstringstream.Create(bitmaptortf(bmp));
try
RxRichEdit2.PlainText:=False;
RxRichEdit2.StreamMode:=[smselection];
RxRichEdit2.Lines.LoadFromStream(ss);
RxRichEdit2.StreamMode:=[];
finally
ss.Free;
end;
finally
bmp.Free;
end;
end;
при реализации данного кода приложени откомпилилось нормально без ошибок но при запуске чата, при нажатии на Image6 или на BitBtn6, приложение зависает резко повышется использование ОЗУ до 1,4Гига против 380мб с запущенным делфи, проходит секунд 20 вылетает ошибка
скрин ошибки

Всем заранее благодарен. Очень хочу вставить смайлик в чат...

Последний раз редактировалось rzawm; 23.04.2009 в 09:51.
rzawm вне форума Ответить с цитированием
Старый 23.04.2009, 09:49   #92
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

Данная ошибка вылетает только при клике на Image6 либо BitBtn6, если на них не на жимать то чат работает как часы, а если нажать то вылетит ошибка её закрываем и чат продолжает нормально работать, каждый раз при клике на тот Image или BitBtn вылетает эта ошибка
rzawm вне форума Ответить с цитированием
Старый 24.04.2009, 01:18   #93
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Запустите приложение из под Delphi и посмотрите, на какой строке кода останавливает работу обработчик ошибок.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.04.2009, 08:54   #94
BiT
 
Аватар для BiT
 
Регистрация: 24.03.2009
Сообщений: 5
По умолчанию

Здравствуйте у меня такой вопрос

Как передать приватный текст в другую форму я как понял вот эта строка отвечает за привад, но у меня нечто не выходит



Код:
3:Begin ShowColorMassage(Copy(text,1,5)+Copy(text,7+Length(NikEdit.Text),len-Length(NikEdit.Text)-1), 1);
BiT вне форума Ответить с цитированием
Старый 24.04.2009, 09:17   #95
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

Beermonza, ок сегодня посмотрю, потом отпишу
rzawm вне форума Ответить с цитированием
Старый 25.04.2009, 08:33   #96
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

Вот на какой страке в Delphiях вылетает с ошибкой :
Код:
procedure TForm1.Image6Click(Sender: TObject);
var
ii:integer;
ss:tstringstream;
bmp:tbitmap;
begin
bmp:=tbitmap.Create;
try
bmp.Assign(image6.Picture.Bitmap);
ss:=tstringstream.Create(bitmaptortf(bmp)); {error!!!!!!!!!!! В этом месте вылетает с ошибкой!!!!}
try
RxRichEdit2.PlainText:=False;
RxRichEdit2.StreamMode:=[smselection];
RxRichEdit2.Lines.LoadFromStream(ss);
RxRichEdit2.StreamMode:=[];
RxRichEdit2.Lines.SaveToFile('rich.rtf');
finally
ss.Free;
end;
finally
bmp.Free;
end;

Panel1.Visible:=False;

end;
В фигурных скобках подписал, в том же месте и при нажатии на BitBtn6 из кода выше, аналогичная ошибка. Очень буду признателен за помощь.
rzawm вне форума Ответить с цитированием
Старый 25.04.2009, 08:34   #97
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

А вот скрин самой ошибки при исполнении кода в делфи:

Народ помогите!!! Очень нужны смайлики.
rzawm вне форума Ответить с цитированием
Старый 25.04.2009, 08:37   #98
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

Что то видимо с функцией bitmaptortf либо при создании этого потока. Сам не магу разобраться, нужна помощь!!!!! Заранее благодарен.
rzawm вне форума Ответить с цитированием
Старый 25.04.2009, 12:57   #99
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Запускаю приложение, делаю его сервером. Далее: отправить сообщение кому - Всем, ввожу тексте и отправляю в этого ошибка List index out of bounds (0).
Shouldercannon вне форума Ответить с цитированием
Старый 26.04.2009, 23:01   #100
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от BiT Посмотреть сообщение
Здравствуйте у меня такой вопрос

Как передать приватный текст в другую форму я как понял вот эта строка отвечает за привад, но у меня нечто не выходит



Код:
3:Begin ShowColorMassage(Copy(text,1,5)+Copy(text,7+Length(NikEdit.Text),len-Length(NikEdit.Text)-1), 1);
Процедура ShowColorMassage(msg: String; index: Byte); рукописная, она работает с компонентом ChatRichEdit, на это указывает структура With ChatRichEdit do Begin в коде процедуры. Если нужно работать с таким же компонентов но в другой форме, например Form2, то достаточно указать ее вот так: With Form2.ChatRichEdit do Begin, разумеется, если там создан компонент TRichEdit с таким именем.

rzawm, посмотрите на этом ресурсе: http://www.delphisources.ru/pages/faq/all_articles.html , по-моему там были примеры вставки графики в RxRichEdit.

Цитата:
Сообщение от Shouldercannon
Запускаю приложение, делаю его сервером. Далее: отправить сообщение кому - Всем, ввожу тексте и отправляю в этого ошибка List index out of bounds (0).
Разумеется, если никто не подключился к вашему серверу он выдаст ошибку, поскольку защитить программу от "дурака" (так уж говорится в народе) задачи не стояло.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Создание клиент-сервера Pblog Обсуждение статей 0 03.10.2007 17:12
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл Pblog Обсуждение статей 0 31.08.2007 20:00
обновление в блоге - USB Холодильник Pblog Обсуждение статей 0 25.06.2007 14:13
обновление в блоге - О ярлыках Pblog Обсуждение статей 0 27.05.2007 03:17