Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1159686860
Kerk
2006-10-01 11:14
2006.10.22
Олигархи


15-1159463241
Layner
2006-09-28 21:07
2006.10.22
Расчет полиноминального тренда 6й степени


6-1148556769
Andrey_r
2006-05-25 15:32
2006.10.22
IdFTP


15-1159674869
Fedia
2006-10-01 07:54
2006.10.22
ссылка на рейтинг функций, аналогов Pos


2-1159794964
DevilDevil
2006-10-02 17:16
2006.10.22
TMEMO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский