Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
3-1156174631
DBE
2006-08-21 19:37
2006.10.22
table.Filter наличие подстроки в ячейки


2-1159642430
vegarulez
2006-09-30 22:53
2006.10.22
Как удалить ячейку из стринг грид?


1-1157794682
yahaha
2006-09-09 13:38
2006.10.22
Webbrowser


11-1136052803
Boguslaw
2005-12-31 21:13
2006.10.22
AncestorOfObject


4-1149617994
Ветерок
2006-06-06 22:19
2006.10.22
ну как всё-таки измерить частоту при помощи com - порта ?