Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

Как в RichEdit открыть текст, сохранённый в формате Doc?   Найти похожие ветки 

 
Zagaevskiy ©   (2007-05-25 18:47) [0]

LoadFromFile - нет  читает только rtf


 
Desdechado ©   (2007-05-25 19:02) [1]

Так и должно быть. Т.к. RTF = Rich Text Format, и RichEdit - его родной.


 
JanMihail ©   (2007-05-25 19:04) [2]

Очень просто. Делай так и читай как rtf:


var
 Wrd: OleVariant;
...

procedure TForm1.Button1Click(Sender: TObject);
begin
 Wrd := CreateOleObject("Word.Application");
 Wrd.Documents.Open("C:\1.doc");
 Wrd.ActiveDocument.SaveAs("c:\1.rtf");
 Wrd.Quit;
end;

Нашел что спрашивать. Сам бы хоть попробовал. На своих ошибках учись


 
Desdechado ©   (2007-05-25 19:36) [3]

> JanMihail ©   (25.05.07 19:04) [2]
Word есть далеко не у всех.


 
JanMihail ©   (2007-05-25 20:05) [4]

Exe-шник лежит здесь:
http://JanMihailPrograms.narod.ru/RichEdit.rar

unit code;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Menus, ComCtrls;

type
 TForm1 = class(TForm)
   OpenDialog1: TOpenDialog;
   MainMenu1: TMainMenu;
   Memo1: TMemo;
   Filemenu1: TMenuItem;
   Open1: TMenuItem;
   Unicode1: TMenuItem;
   procedure Open1Click(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure Memo1Change(Sender: TObject);
   procedure Memo1Click(Sender: TObject);
   procedure Unicode1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 ff,fo:file;
 xs,xofs:byte;
 xw:word;
 xz,i:integer;
 st:string;

implementation

{$R *.dfm}

procedure TForm1.Open1Click(Sender: TObject);
begin
 If OpenDialog1.Execute then
 begin
    assignfile(ff,OpenDialog1.FileName); {îòêðâàåì èñõîäíûé ôàéë}
    reset(ff,2); {äëÿ ÷òåíèÿ äâóõáàéòíûìè ñëîâàìè}
    xz:=filesize(ff); {ðàçìåð ôàéëà â äâóõáàéòíûõ ñëîâàõ}
    st:=OpenDialog1.FileName; {ïðåîáðàçóåì íàçâàíèå}
    delete(st,length(st)-2,3);
    st:=st+"txt";
    assignfile(fo,st); {ñîçäàåì txt}
    rewrite (fo,1);
    st:=""; {ñòðîêà ïîíàäîáèòñÿ äëÿ âûâîäà â Memo}
    for i:=1 to xz do
    begin
         blockread(ff,xw,1); {÷èòàåì ñëîâî}
         xofs:=hi(xw); {äåëèì åãî íà áàéòû}
         xs:=lo(xw);
         if (xofs=0) then {íàø àëãîðèòì}
         begin
           if (xs<>0) then
           begin
             blockwrite(fo,xs,1);
             if xs=13 then
             begin
               Memo1.Lines.Add(st); {&#226;&#251;&#226;&#238;&#228;&#232;&#236; &#226; Memo &#234;&#224;&#230;&#228;&#243;&#254; &#241;&#242;&#240;&#238;&#234;&#243;}
               st:="";
             end
             else st:=st+chr(xs); {&#228;&#238;&#239;&#238;&#235;&#237;&#255;&#229;&#236; &#241;&#242;&#240;&#238;&#234;&#243;}
           end;
         end else
         if (xofs=4) then
         begin
         if xs<>0 then
         begin
              xs:=xs+176;
              blockwrite(fo,xs,1);
              st:=st+chr(xs);
         end;
         end else
         begin
           blockwrite(fo,xs,1); {&#229;&#241;&#235;&#232; &#237;&#229; 0 &#232; &#237;&#229; 4 - &#239;&#232;&#248;&#229;&#236; &#226;&#241;&#229;}
           blockwrite(fo,xofs,1); {&#226; &#244;&#224;&#233;&#235;, &#237;&#238; &#237;&#229; &#226; &#241;&#242;&#240;&#238;&#234;&#243;}
         end;
    end;
    closefile(ff);
    closefile(fo);
    Memo1.SelStart:=Memo1.Perform(EM_LINEINDEX,1,0)+1;
    Memo1.Perform(EM_SCROLLCARET,0,0);
    Memo1.SetFocus;
 end;
end; {Open}

procedure TForm1.FormPaint(Sender: TObject);
begin
    HideCaret(Memo1.Handle); {&#241;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#234;&#243;&#240;&#241;&#238;&#240;}
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
    HideCaret(Memo1.Handle); {&#241;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#234;&#243;&#240;&#241;&#238;&#240;}
end;

procedure TForm1.Memo1Click(Sender: TObject);
begin
    HideCaret(Memo1.Handle); {&#241;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#234;&#243;&#240;&#241;&#238;&#240;}
end;

procedure TForm1.Unicode1Click(Sender: TObject);
var wch:WideChar;
   wst:WideString;
begin
 If OpenDialog1.Execute then
 begin
    Memo1.Lines.Clear;
    wst:="";
    assignfile(ff,OpenDialog1.FileName); {&#238;&#242;&#234;&#240;&#226;&#224;&#229;&#236; &#232;&#241;&#245;&#238;&#228;&#237;&#251;&#233; &#244;&#224;&#233;&#235;}
    reset(ff,sizeof(wch)); {&#228;&#235;&#255; &#247;&#242;&#229;&#237;&#232;&#255; &#228;&#226;&#243;&#245;&#225;&#224;&#233;&#242;&#237;&#251;&#236;&#232; &#241;&#232;&#236;&#226;&#238;&#235;&#224;&#236;&#232;}
    xz:=filesize(ff); {&#240;&#224;&#231;&#236;&#229;&#240; &#244;&#224;&#233;&#235;&#224; &#226; &#241;&#232;&#236;&#226;&#238;&#235;&#224;&#245;}
    for i:=1 to xz do
    begin
      try
        blockread(ff,wch,1);
      except
        continue;
      end;
        if wch>#31 then wst:=wst+wch else
        if wch=#13 then
        begin
          st:=wst;
          Memo1.Lines.Add(st); {&#226;&#251;&#226;&#238;&#228;&#232;&#236; &#226; Memo &#234;&#224;&#230;&#228;&#243;&#254; &#241;&#242;&#240;&#238;&#234;&#243;}
        end;
    end;
    closefile(ff);
 end;
end;

end.


 
Johnmen ©   (2007-05-25 21:05) [5]


> LoadFromFile - нет  читает только rtf

Да-дад. Это непорядок! Он обязан читать не только doc, но и rar, и avi, и flv!


 
JanMihail ©   (2007-05-25 21:15) [6]

Вот так 100% работает, но это только если есть Word на компе
var
 Wrd: OleVariant;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
 Wrd := CreateOleObject("Word.Application");
 Wrd.Documents.Open("c:\1.doc");
 Wrd.ActiveDocument.SaveAs("C:\1.rtf", 2);
 Wrd.Quit;
 sleep(1000);
 RichEdit1.Lines.LoadFromFile("C:\1.rtf");
end;


 
JanMihail ©   (2007-05-25 21:41) [7]

Если строку заменишь на эту:
Wrd.ActiveDocument.SaveAs("C:\1.rtf", 6);
То и форматирование сохранится



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.047 c
15-1179744405
boriskb
2007-05-21 14:46
2007.06.17
Дуэльный кодекс


2-1180095658
Zed
2007-05-25 16:20
2007.06.17
Paradox, Microsoft Access… ???


1-1177001980
Angakok
2007-04-19 20:59
2007.06.17
Непонятная особенность в работе кода


2-1180013510
Serega_61
2007-05-24 17:31
2007.06.17
Вложенные формы


2-1180086410
Darvin
2007-05-25 13:46
2007.06.17
Ошибка "OLE error 800A03EC" при передаче StringGrid в Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский