Форум: "Начинающим";
Текущий архив: 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.rarunit 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); {âûâîäèì â Memo êàæäóþ ñòðîêó}
st:="";
end
else st:=st+chr(xs); {äîïîëíÿåì ñòðîêó}
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); {åñëè íå 0 è íå 4 - ïèøåì âñå}
blockwrite(fo,xofs,1); {â ôàéë, íî íå â ñòðîêó}
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); {ñêðûâàåì êóðñîð}
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
HideCaret(Memo1.Handle); {ñêðûâàåì êóðñîð}
end;
procedure TForm1.Memo1Click(Sender: TObject);
begin
HideCaret(Memo1.Handle); {ñêðûâàåì êóðñîð}
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); {îòêðâàåì èñõîäíûé ôàéë}
reset(ff,sizeof(wch)); {äëÿ ÷òåíèÿ äâóõáàéòíûìè ñèìâîëàìè}
xz:=filesize(ff); {ðàçìåð ôàéëà â ñèìâîëàõ}
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); {âûâîäèì â Memo êàæäóþ ñòðîêó}
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