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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 18:11   #1
Anton147
 
Регистрация: 15.10.2012
Сообщений: 7
По умолчанию Сохранение текста и изображения в *.RTF в Delphi

Ребята, Привет! Нужна ваша помощь нужно написать такую программу чтобы можно было в файл в *.rtf формате сохранить изображение(из PaintBox или Image) и текст. Какие компоненты нужно при этом использовать и какие библиотеки подключать?
Anton147 вне форума Ответить с цитированием
Старый 15.02.2013, 04:37   #2
Anton147
 
Регистрация: 15.10.2012
Сообщений: 7
По умолчанию

нашел вот такую функцию которая переводит bmp в rtf формат

Код:
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;

Но после сохранения файла rtf он оказывается пустым.
Anton147 вне форума Ответить с цитированием
Старый 15.02.2013, 09:11   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

А вызываете то как эту функцию?
phomm вне форума Ответить с цитированием
Старый 15.02.2013, 17:01   #4
Anton147
 
Регистрация: 15.10.2012
Сообщений: 7
По умолчанию

Функция вызывается при сохранении:

Код:
procedure TForm1.Button3Click(Sender: TObject);
var f:TextFile;
begin
SaveDialog1.FilterIndex:=1;
SaveDialog1.FileName:='';
if SaveDialog1.Execute then
begin
AssignFile(f,SaveDialog1.FileName);
Rewrite(f);
Write(F,BitmapToRTF(Image1.Picture.Bitmap));
CloseFile(f);
Form1.Memo2.SelText:=BitmapToRTF(Image1.Picture.Bitmap);
end;
end;
Anton147 вне форума Ответить с цитированием
Старый 15.02.2013, 19:56   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Откройте получаемый файл программой Wordpad.exe (стандартная в виндовс) Всё записывается нормально. Ворд почему-то не показывает, да.. Надо копать сам ворд... ибо сохранив в вордпаде сам файл (ничего не меняя просто открыв и сохранив, можно в этот же а можно и в другой файл) - ворд начинает читать.
Моё предложение - сравнивать Вам эти 2 файла и восполнить различия в функции. Тогда ворд начнет читать то, что Вы прогой сгенерите.
phomm вне форума Ответить с цитированием
Старый 15.02.2013, 23:29   #6
Anton147
 
Регистрация: 15.10.2012
Сообщений: 7
По умолчанию

Так и есть в WordPade сохраняю и все нормально и в ворде видит. Спасибо дальше думаю разберусь
Anton147 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение RTF (Delphi) Артём123 Общие вопросы Delphi 5 23.11.2012 12:45
Преобразование текста программы в RTF Kostj@n Общие вопросы Delphi 3 27.12.2011 11:44
Rave Report сохранение в формате .rtf maks1503 Компоненты Delphi 0 23.12.2011 01:50
сохранение изображения ВалекFCRK Общие вопросы Delphi 9 26.09.2011 21:49
bmp изображения в rtf Richard22 Общие вопросы Delphi 10 15.05.2010 16:29