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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 17:06   #1
DIMA1605
Пользователь
 
Аватар для DIMA1605
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию Открытие документа Word.

Как создать программу, при активации которой открывается документ Word?
DIMA1605 вне форума Ответить с цитированием
Старый 03.07.2012, 21:54   #2
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

ручками ), ну а вообще надо знать структуру файла

Цитата:
В Интернете можно найти немало ссылок на фирменные материалы "Microsoft Word 6.0 Binary File Format" и "Microsoft Word 97 Binary File Format", которые представляют собой огромные файлы, заполненные большим количеством малопонятных терминов, таблиц, списков и пр. Но название не совсем точно отражает действительность: на самом деле эти материалы описывают всего лишь структуру потока под названием "WordDocument". Продемонстрируем, что ничего совсем уж иррационального и трансцендентного в фирменной документации от Micrisoft нет.

Итак, поток "WordDocument" (в документации он называется "главным потоком" - main stream) начинается со своего собственного внутреннего заголовка, в котором мы упомянем всего несколько наиболее интересных для нас полей:
Смещение Длина Назначение Примечание
-----------------------------------------------
0h 2 Сигнатура Word6/Word97
2h 2 Код версии Word6/Word97
18h 4 Начало текста Word6/Word97
1Ch 4 Конец текста+1 Word6/Word97
34h 4 Длина текста+1 Word6
4Ch 4 Длина текста+1 Word97

Для документов, созданных в Word v6.0/7.0 или WordPad, сигнатура обычно равна 0A5DCh, а для Word97/2K/XP она равна 0A5ECh (все это верно по крайней мере для русских версий).

Если документ создан в MS WinWord, то текст обычно начинается по "круглым" смещениям (например, 200h или 300h), для прочих продуктов это не всегда выполняется (например, WordPad может разместить его по "треугольному" смещению 312h).

Текст для формата версий 6.0/7.0 представляет собой обычную последовательность однобайтовых символов в той или иной кодировке, а для более старших версий - в двухбайтовой кодировке UNICODE:
Символ Кодировка
-----------------
0-9 030h-039h
A-Z 041h-05Ah
a-z 061h-07Ah
А-Я 410h-42Fh
Ё 401h
а-я 430h-44Fh
ё 451h

Этой информации вполне достаточно, чтобы, например, извлечь из Word-документа текст. Производить обратную операцию несколько сложнее - для этого придется параллельно формировать таблицы описания свойств символов и абзацев.
вот ссылка
как-то так

Последний раз редактировалось Arhangel7; 03.07.2012 в 22:04.
Arhangel7 вне форума Ответить с цитированием
Старый 03.07.2012, 22:16   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Язык? Цель?
Например, написать bat-файл с содержимым:
C:\"Program Files"\"Microsoft Office"\OFFICE11\WINWORD.EXE 123.doc
123.doc - если файл существует, то откроется иначе откроется новый.
Можно использовать скриптовый язык, например, VBS.


Что-то не так? ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.07.2012, 22:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Язык?
Уверен что речь идет о паскале под винду...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2012, 05:05   #5
DIMA1605
Пользователь
 
Аватар для DIMA1605
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

Мне просто интересно. Надо написать в паскале. Я вроде бы все сделал но он пишет что доступ к файлу запрещен.
DIMA1605 вне форума Ответить с цитированием
Старый 05.07.2012, 10:10   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Думаю, что без специальной библиотеки с этим не разобраться. К тому же нужно хорошо знать RTF (а есть ли он для MS Word в открытом доступе?).
Такой библиотеки в Паскале нет (могу ошибаться, но мне неизвестно). После установки Word'а в системе появляются dll, но как с ними работать из среды Паскаль, для меня большой вопрос, так что пользуюсь VBS.

Как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 06.07.2012, 16:46   #7
DIMA1605
Пользователь
 
Аватар для DIMA1605
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

А с помощью паскаля можно открыть хотя бы текстовый документ?
DIMA1605 вне форума Ответить с цитированием
Старый 06.07.2012, 17:48   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Как вариант
Код:
 {$M $8000,0,0 }
uses Dos;
begin
  SwapVectors;
  Exec('c:\windows\system32\notepad.exe', 'c:\autoexec.bat');
  SwapVectors
end.
Пути, естественно, свои должны быть
eoln вне форума Ответить с цитированием
Старый 06.07.2012, 20:47   #9
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Цитата:
А с помощью паскаля можно открыть хотя бы текстовый документ?
Что имеется ввиду под текстовым документом в Вашем понимании?
Текст который подготовлен блокнотом или подготовленный в Word с сохранением "Обычный текст (*.txt)" (формат ASCII)?
Или же текстовый документ в формате Word (*.doc) в том смысле, что в документе нет других объектов: таблиц, картинок, ...?
Какова цель?
Показать на экране текст и всё, или вывести текст и управлять его расположением (скролинг) без возможности редактировать? Или надо что-то найти и извлечь/заменить. А может все же надо редактировать?

И ещё. Что понимается под "открыть"? Программно, для считывания некоторых данных, или для вывода на экран: открыть - это в смысле показать?
Например,
Код:
var fh: Text;
    str: string;
begin
assign(fh, 'c:\MyDoc\Mytext.txt');
reset(fh); {открываем файл для чтения}
readln(fh, str); {Читаем строку в переменную str}
{Тут анализируем строку на предмет поиска ключевого слова}
{и присвоенного ему значения}
writeln(str); {Выводим строку на экран монитора: показываем (открываем) текст пользователю}
...
end.
Как-то всё ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие документа Word из Excel ольгаг Microsoft Office Excel 3 19.09.2011 19:01
открытие документа с определенного места vstorspb Microsoft Office Word 1 29.07.2011 23:03
открытие документа word balashova C++ Builder 0 11.04.2011 22:56
Delphhi 7 Открытие документа ms Word Aleks1988 Помощь студентам 14 14.05.2010 13:30
Открытие документа из приложения Jene4ka Общие вопросы Delphi 2 03.05.2010 15:47