Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизWord и RichEdit Найти похожие ветки
← →
Juri (2006-10-04 15:19) [0]доброго времени суток! Подскажиет пожалуйста как мне из документа Microsoft Word текст поместить в RichEdit со всеми форматами тексат?
← →
clickmaker © (2006-10-04 15:30) [1]Word - Save as RTF - RE.Lines.LoadFromFile
← →
umbra © (2006-10-04 15:34) [2]сохранить документ в формате ртф и загрузить его в
RichEdit
← →
Juri (2006-10-04 15:39) [3]Спасибо огромное как я сам то не допендрил)))
← →
Juri (2006-10-04 16:07) [4]а как же програмно сохранить ворд как ртф?
← →
EvS © (2006-10-04 16:21) [5]
function ConvertDoc2Rtf(var FileName: string) : Boolean;
var
oWord: OleVariant;
oDoc: OleVariant;
begin
Result := False;
try
oWord := GetActiveOleObject("Word.Application");
except
oWord := CreateOleObject("Word.Application");
end;
oWord.Documents.Open(FileName);
oDoc := oWord.ActiveDocument;
FileName := ChangeFileExt(FileName, ".rtf");
oDoc.SaveAs(FileName,wdFormatRTF);
oWord.ActiveDocument.Close(EmptyParam, EmptyParam, EmptyParam);
oWord.Quit(EmptyParam, EmptyParam, EmptyParam);
oDoc := VarNull;
oWord := VarNull;
Result := True;
end;
← →
Juri (2006-10-04 16:27) [6]
> GetActiveOleObject
ругается...
что в юзес объявить?
← →
Ketmar © (2006-10-04 16:32) [7]ActiveX?
← →
Juri (2006-10-04 16:34) [8]нет не помогает
← →
EvS © (2006-10-04 16:34) [9]> что в юзес объявить?
ComObj, WordXP
← →
Juri (2006-10-04 16:37) [10]спасиба
← →
umbra © (2006-10-04 16:42) [11]вот примерно так. Только учтите, что если Вы хотите конвертировать массу документов, то лучше ворд создать один раз, и там конвертировать файлы.
uses ...., ComObj, Word97{или 2000, или xp}, ......
procedure SaveDocAsRTF(fulldocpath, fullrtfpath: string);
var
WordApp, doc: Variant;
begin
WordApp := Unassigned;
doc := Unassigned;
WordApp := CreateOLEObject("Word.Application");
if not VarIsEmpty(WordApp) then
try
doc := WordApp.Open(Filename:=fulldocpath);
doc := doc.SaveAs(FileFormat:=wdFormatRTF);
finally
if not VarIsEmpty(doc) then
doc.Close;
WordApp.Quit;
doc := Unassigned;
WordApp := Unassigned;
end;
end;
← →
Juri (2006-10-04 17:29) [12]ещё такой вапрос как можно из двух ричедитов взять текст соединить и вставить в третий ричедит НО только формат текста должен сохранится....
← →
Ketmar © (2006-10-04 17:55) [13]баян. через clipboard, например. %-)
← →
Juri (2006-10-04 19:05) [14]да не баян просто думал что можно наипростейшим способом перекинкть lines и всё но при таком перекидывании формат текста теряется...
← →
Ketmar © (2006-10-04 19:10) [15]>[14] Juri 4-Oct-2006, 19:05
>перекидывании формат текста теряется...
что вполне закономерно. %-) простейший -- через clipboard.
← →
YurikGL © (2006-10-04 19:41) [16]
> баян. через clipboard, например. %-)
ClipBoard использовать плохо.... там у пользователя могло что то лежать.
← →
Ketmar © (2006-10-04 19:48) [17]>[16] YurikGL(c) 4-Oct-2006, 19:41
>ClipBoard использовать плохо.... там у
>пользователя могло что то лежать.
а я не говорил "лучший". я сказал -- "простейший". а лежать там будет только до первого переноса. %-)
← →
Juri (2006-10-05 14:27) [18]альтернотива клипбоарду есть?
← →
КотКамышевый (2006-10-05 16:28) [19]коряво, но работает. Проверки ошибок опущены для простоты
const
ParaTag = "\par";
var
hFile1, hFile2, hFile3: Cardinal;
dwSize1, dwSize2, i, dwBytes: Cardinal;
Buf1, Buf2, P: PByte;
begin
RichEdit1.Lines.SaveToFile("f:\rtf1.rtf");
RichEdit2.Lines.SaveToFile("f:\rtf2.rtf");
hFile1 := CreateFile("f:\rtf1.rtf", GENERIC_READ, 0, nil, OPEN_EXISTING,
0, 0);
hFile2 := CreateFile("f:\rtf2.rtf", GENERIC_READ, 0, nil, OPEN_EXISTING,
0, 0);
dwSize1 := GetFileSize(hFile1, nil);
dwSize2 := GetFileSize(hFile2, nil);
Buf1 := AllocMem(dwSize1);
Buf2 := AllocMem(dwSize2);
ReadFile(hFile1, Buf1^, dwSize1, dwBytes, nil);
ReadFile(hFile2, Buf2^, dwSize2, dwBytes, nil);
CloseHandle(hFile1);
CloseHandle(hFile2);
P := Buf2;
i := 0;
while (i < dwSize2) do
begin
if CompareMem(P, @ParaTag[1], Length(ParaTag)) then
begin
hFile3 := CreateFile("f:\rtf3.rtf", GENERIC_READ or GENERIC_WRITE, 0, nil, CREATE_ALWAYS,
0, 0);
WriteFile(hFile3, Buf1^, dwSize1, dwBytes, nil);
SetFilePointer(hFile3, -4, nil, FILE_CURRENT);
WriteFile(hFile3, P^, dwSize2 - i, dwBytes, nil);
CloseHandle(hFile3);
break;
end;
Inc(P);
Inc(i);
end;
FreeMem(Buf1);
FreeMem(Buf2);
RichEdit3.Lines.LoadFromFile("f:\rtf3.rtf");
← →
Ketmar © (2006-10-05 16:43) [20]>[19] КотКамышевый 5-Oct-2006, 16:28
>коряво
не то слово. %-))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c