Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
59 / 31 / 15
Регистрация: 30.05.2009
Сообщений: 224
1

Как сохранить текст в rtf формате на Winapi Delphi?

10.07.2010, 13:19. Показов 2280. Ответов 7
Метки нет (Все метки)

Подскажите, пожалуйста. На языке C++ winapi есть варианты сохранения в формате rtf, а на Delphi winapi так ничего и не нашёл? Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2010, 13:19
Ответы с готовыми решениями:

Как в документ Word вставить форматированный текст в формате RTF?
Как в документ Word вставить форматированный текст в формате RTF (clipboard не предлагать)

Как сохранить текст из RichTextBox.RTF в БД Access
Проблема в том, что RichTextBox кодирует русские буквы, например буква ы кодируется в \'fb, при...

Как можно сохранить текст из RichTextBox в файл с раширением rtf?
подскажите плиз: как можно сохранить текст из RichTextBox в файл с раширением rtf, что то у меня...

Сохранение из RichTextBox текст в формате rtf
Как сохранить в формате (*.rtf) string arr_text =...

7
КотЪ
219 / 219 / 60
Регистрация: 26.05.2009
Сообщений: 688
10.07.2010, 14:57 2
WinAPI не привязан к языкам и средам программирования, его функции и процедуры везде одинаковы.
0
59 / 31 / 15
Регистрация: 30.05.2009
Сообщений: 224
10.07.2010, 22:43  [ТС] 3
Цитата Сообщение от Zabiyak Посмотреть сообщение
WinAPI не привязан к языкам и средам программирования, его функции и процедуры везде одинаковы.
Об этом я знаю. Но у меня никак не выходит реализовать получение текста в формате RTF. Знаю что нужно работать с EM_STREAMIN и EM_STREAMOUT, но как именно с ними работать не понятно.
0
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
11.07.2010, 08:29 4
http://frolov-lib.ru/books/bsp/v22/ch5_4.html
гугл умный- гугл все знает.
0
59 / 31 / 15
Регистрация: 30.05.2009
Сообщений: 224
11.07.2010, 11:55  [ТС] 5
Цитата Сообщение от radiohobbyt Посмотреть сообщение
Это я уже видел в инете. Но как перевести на Delphi не знаю.
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 540
11.07.2010, 14:05 6
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Функция OpenCallback
function OpenCallback(dwCookie: DWORD; pbBuff: PChar; cb: LongInt; pcb: pLongInt): DWORD; stdcall;
begin
    // Выполняем чтение блока данных длиной cb байт
    pcb^ := _lread( HFILE(dwCookie), pbBuff, cb);
    if pcb^ < 0 then
        pcb^ := 0;
    Result := 0;
end;
 
 
procedure FileOpen(hWnd: HWND);
var
    ofn: OPENFILENAME;
    szFile: array [0..255] of Char;
    szDirName: array [0..255] of Char;
    szFileTitle: array[0..255] of Char;
 
const szFilter = 'Rich Text Files'#0'*.rtf'#0'Text Files'#0'*.txt'#0 +
                 'Any Files'#0'*.*'#0#0;
var
    hFile: THandle;
    ofs: OFSTRUCT;
    es: EDITSTREAM;
  hwndEdit: THandle;
begin
  FillChar(ofn, SizeOf(ofn), #0); //    memset(&ofn, 0, sizeof(OPENFILENAME));
    GetCurrentDirectory(SizeOf(szDirName), szDirName);
    szFile[0] := #0;
 
    // Подготавливаем структуру для выбора входного файла
    ofn.lStructSize     := SizeOf(OPENFILENAME);
    ofn.hwndOwner       := hWnd;
    ofn.lpstrFilter     := szFilter;
    ofn.lpstrInitialDir := szDirName;
    ofn.nFilterIndex    := 1;
    ofn.lpstrFile       := szFile;
    ofn.nMaxFile        := SizeOf(szFile);
    ofn.lpstrFileTitle  := szFileTitle;
    ofn.nMaxFileTitle   := SizeOf(szFileTitle);
    ofn.Flags := OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST;
 
    // Выводим на экран диалоговую панель, предназначенную для выбора входного файла
    if GetOpenFileName(ofn) then begin
        // Если файл выбран, открываем его для чтения
        if ofn.lpstrFile <> nil then begin
            hFile := OpenFile(ofn.lpstrFile, ofs, OF_READ);
 
            // Устанавливаем параметры функции обратного вызова, которая будет выполнять чтение
            es.dwCookie    := hFile;
            es.dwError     := 0;
            es.pfnCallback := @OpenCallback;
 
      hwndEdit := Form1.RichEdit1.Handle;
 
            // Если расширение файла rtf, файл загружается как rtf-файл.
            // В противном случае он загружается как обычный текстовый файл
            //_strupr(&ofn.lpstrFile[ofn.nFileExtension]);
      if AnsiUpperCase(Copy(PChar(@ofn.lpstrFile[ofn.nFileExtension]), 1, 3)) = 'RTF' then
                SendMessage(hwndEdit, EM_STREAMIN, SF_RTF, LongInt(@es))
            else
                SendMessage(hwndEdit, EM_STREAMIN, SF_TEXT, LongInt(@es));
            // Закрываем файл
            _lclose(hFile);
 
            // Сбрасываем признак изменения содержимого окна редактора текста
            SendMessage(hwndEdit, EM_SETMODIFY, 0, 0);
        end;
    end;
end;
Добавлено через 9 минут
это как вариант перевода на pascal функции из приведенного примера
а чем не устраивает готовый компонент TRichEdit?
1
59 / 31 / 15
Регистрация: 30.05.2009
Сообщений: 224
11.07.2010, 20:17  [ТС] 7
Цитата Сообщение от kukuruku310 Посмотреть сообщение
а чем не устраивает готовый компонент TRichEdit?
Просто если я его буду использовать то тогда размер пустого окна программы будет весить 350кбайт, а я хочу чтобы программа весила максимум 50 кбайт. Так то можно просто перейти на kol компоненты, но WinApi мне нравится больше всего.

kukuruku310, большое спасибо за перевод с языка C++.
0
59 / 31 / 15
Регистрация: 30.05.2009
Сообщений: 224
14.07.2010, 22:23  [ТС] 8
Вот вариант открытия и сохранения файла в RTF формате на Delphi:
0
Вложения
Тип файла: rar TextOpenSave.rar (3.6 Кб, 153 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2010, 22:23

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как при нажатии кнопки "сохранить" выдать окно с выбором места сохранения и сохранить текст, написанный в ТекстБокс, в формате .doc(x)
Уважаемы дамы и господа! Требуется чтоб при нажатии кнопки &quot;сохранить&quot; программа выводила окно с...

Как сохранить текст.файл в формате DOS?
Как сохранить текст.файл в формате DOS?

Извлечь выделенный текст в rtf формате RichEdit. Delphi7
Нужна помощь. Надо извлечь выделенный текст в какую-либо переменную, только чтобы формат текста...

Как сохранить файл из Richtextbox в формате тхт и чтобы текст ...
Привет всем! Так вот например В Richtextbox у меня такой текст вввввввввв аааааааааа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.