帮忙看看,一个文本处理小程序,可以编译通过,但无法正确运行!!(100分)

  • 主题发起人 主题发起人 foolboy007
  • 开始时间 开始时间
F

foolboy007

Unregistered / Unconfirmed
GUEST, unregistred user!
功能是把文本竖排,从右至左
======================
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
OpDlg: TOpenDialog;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var s:array[1..20,1..20] of string;
ss:Tstrings;
sfile:textfile;
i,j:integer;

begin
ss:=memo1.lines;
if opdlg.execute then
begin
assignfile(sfile,opdlg.FileName);
reset(sfile);
// form a word martix
for i:=20 downto 1 do
for j:=1 to 20 do
begin
Read(sfile,s[i,j]);
if j=20 then
s[i,j]:=s[i,j]+#13+#10;// add an enter at the end of line
end;
//now we put these words verticlly
for i:=1 to 20 do
for j:=1 to 20 do
ss.strings[0]:=s[i,j]+ss.strings[0];
memo1.lines:=ss;
end
else messagebox(handle,'open file error','error',MB_ok);
end;

end.
 
能不能说清楚怎么个排序,什么从又到左
 
就是排成像古文的那种版式
比如说:
疑 床 静
是 前 夜
地 明 思
上 月
霜 光
这种形式。
 
1、看你的程序,你的文件必须是 400 个字母的英文的内容,不能包含字母,而且400个字母
虽然是20行,但是是连续的,你把回车删掉,因为你的程序没读取回车换行
2、下面的就删了他吧,不用
if j=20 then
s[i,j]:=s[i,j]+#13+#10;// add an enter at the end of line
3、ss.strings[0]:=s[i,j]+ss.strings[0];
应该是
ss.strings[i-1]:=s[i,j]+ss.strings[i-1];?
而且在第一个for之后应该ss.Add('')一下?
 
pipi.前辈:
我实在太菜,在学校里学的是tc2.0,而且学的不是很好.斗胆再问一下,如果处理中文应该怎么办?
在http://www.delphibbs.com/delphibbs/dispq.asp?lid=912133 还有50分,到时候一并奉上.
 
后退
顶部