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

Вниз

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

Наверх




Память: 0.5 MB
Время: 0.024 c
15-1179830364
fts@Grafika
2007-05-22 14:39
2007.06.17
нашёл ссылку на реализацию алгоритма Диффи-Хеллмана


8-1159785652
kav01
2006-10-02 14:40
2007.06.17
Как очистить канву прозрачного компонента


2-1180428969
Василий
2007-05-29 12:56
2007.06.17
Просмотр ячейки в StringGrid


1-1176996961
Dmitry_177
2007-04-19 19:36
2007.06.17
Копия запущенной программы


15-1179475698
codecleaner
2007-05-18 12:08
2007.06.17
О пользе стандартов...