掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MS-WORDの文書ファイルを読込んでテキスト表示するには? (ID:15553)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
おにーさん。 それはリッチテキストですよ!!! TRichEditコントロールでLoadFromFileすればテキストを得ることができます。自力で読めないかとフォーマット仕様を読みましたが、タグ大杉です。 テキスト部分だけでもぱっと見ただけでは分かりません。 一応上に書いたソースにdoc,rtf判別ルーチンだけ付けておきました。 ちなみにrtfを解析する気力も時間もありませんです。ハィ。 function CheckVersion(stream:TStream):integer; var header : array [0..7] of Byte; version : Byte; fcDop : Longword ; begin //Reset(F, 1); stream.Seek(0,soFromBeginning); stream.Read(header,Length(header)); //BlockRead(F,header,Length(header)); //D0-CF-11-E0-A1-B1-1A-E1 if (header[0]=$D0) and (header[1]=$CF) and (header[2]=$11) and (header[3]=$E0) and (header[4]=$A1) and (header[5]=$B1) and (header[6]=$1A) and (header[7]=$E1) then begin //Doc形式 stream.Seek($0202,soFromBeginning); stream.Read(version,Sizeof(version)); //showmessage(inttostr(version)); if version >= 101 then begin result:=6; end else Result:=5; end else if (header[0]=$7B) and (header[1]=$5C) and (header[2]=$72) and (header[3]=$74) and (header[4]=$66) and (header[5]=$31) then begin //rtf形式 Result:=0; end else Result:=-1; end; function TForm1.LoadDoc8File(FileName: string; var FormatCode:integer):string; var F: File; str : string; W8Text: array [0..511] of Byte; //Word文字列ブロック fcMin:Longword; //Word文字列開始 fcMac:Longword; //Word文字列終了 spos :Longword; FS:TFileStream; begin str:=''; FS:=TFileStream.Create(FileName, fmOpenReadWrite or fmShareDenyNone); FormatCode :=CheckVersion(FS); if FormatCode >=6 then begin //FIB FS.Seek($0218,soFromBeginning); FS.Read(fcMin,Sizeof(fcMin)); FS.Seek($021C,soFromBeginning); FS.Read(fcMac,Sizeof(fcMac)); spos:= $0200 + fcMin; FS.Seek(spos,soFromBeginning); repeat FS.Read(W8Text,Sizeof(W8Text)); str:=str + ExtractText(W8Text); spos:=spos + 512; until spos >= $0200 + fcMac; result:=str; end else if FormatCode =0 then begin Result:=''; end else Result:=''; FS.Free; end; procedure TForm1.Button1Click(Sender: TObject); var formatCode:integer; begin //確認 Memo1.Text:= LoadDoc8File(Edit1.Text,formatCode); if formatCode=0 then showmessage('リッチテキストです'); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.