定义一个数组。'A'..'Z','a'..'z',是顺序型的结构。 取Ascall, 65-97..把memo的 memo.line.text送给一个字符串变量. strfor i=1 to length(str) do begin str[i]; 在这里处理算法。 end;
具体算法如下 可以利用字符为数组下标a1:array ['A'..'z'] of integer; s:char; s1:string; i:integer; begin for s:='A' TO 'z' do begin a1[s]:=0; end; s1:=memo1.Text; for i:=1 to length(s1) do begin a1[s1[i]]:=a1[s1[i]]+1; end ;end;
具体算法如下 可以利用字符为数组下标 var a1:array ['A'..'z'] of integer; s:char; s1:string; i:integer; begin for s:='A' TO 'z' do begin a1[s]:=0; end; s1:=memo1.Text; for i:=1 to length(s1) do begin a1[s1[i]]:=a1[s1[i]]+1; end ;end;
zzheaptech(风的往事):你写的那段代码不正确啊
怎么不正确,完全正确,我都运行了,你是不是忘写var了
这是我根据你的提示修改的。 var EnArray:Array['A'..'Z'] of Integer; procedure MemoText(Text:String;var EnArray:Array of Integer); var Index:Integer; CharIndex:Char; begin for CharIndex:='A' to 'Z' do begin EnArray[CharIndex]:=0;//初始化 end; for Index:=0 to Strlen(PChar(Text)) do begin Inc(EnArray[Text[Index]]); end; end;procedure TForm1.BitBtn2Click(Sender: TObject); var Text:String; begin Text:=Memo1.text; MemoText(Text,EnArray); end;
还是不正确。这是我又修改后的: type InterArray=Array of Integer; EnArray:Array['A'..'Z'] of Integer; procedure MemoText(Text:String;var EnArray:InterArray); var Index:Integer; CharIndex:Char; begin for CharIndex:='A' to 'Z' do begin EnArray[strtoint(CharIndex)]:=0;//初始化 end; for Index:=0 to Strlen(PChar(Text)) do begin Inc(EnArray[strtoint(Text[Index])]); // EnArray[Text[Index]]:=EnArray[Text[Index]]+1; end; end;procedure TForm1.BitBtn1Click(Sender: TObject); var AfterCode:String; HufTree:HufArray; Buffer:Array[0..10240] of Char; begin MemoText(Memo1.Lines.Text,EnArray); end;
应该是这样 type InterArray=['A'..'z'] Array of Integer;procedure MemoText(Text:String;var EnArray:InterArray); var Index:Integer; CharIndex:Char; begin for CharIndex:='A' to 'z' do begin EnArray[strtoint(CharIndex)]:=0;//初始化 end; for Index:=0 to Strlen(PChar(Text)) do begin Inc(EnArray[strtoint(Text[Index])]); // EnArray[Text[Index]]:=EnArray[Text[Index]]+1; end; end;注意:是小z
刚才给你发的那个错了 应该是这样的//定义类型 type InterArray=Array ['A'..'z'] of Integer; //函数 procedure MemoText(Text:String;var EnArray:InterArray); var Index:Integer; CharIndex:Char; begin for CharIndex:='A' to 'z' do begin EnArray[CharIndex]:=0;//初始化 end; for Index:=0 to Strlen(PChar(Text)) do begin Inc(enarray[Text[Index]]); // EnArray[Text[Index]]:=EnArray[Text[Index]]+1; end; end; 调用(我用的是buttonclick事件) procedure TForm1.Button1Click(Sender: TObject); var array1:InterArray; begin MemoText(memo1.Text,array1);
是从MEMO组件的第一行到最后一行
再做一个循环,从第一行中的第一个字母到再后一个字母就可找出来
也可用取asc的办法也要用到copy也很好做
取Ascall, 65-97..把memo的 memo.line.text送给一个字符串变量.
strfor i=1 to length(str) do
begin
str[i];
在这里处理算法。
end;
可以利用字符为数组下标a1:array ['A'..'z'] of integer;
s:char;
s1:string;
i:integer;
begin for s:='A' TO 'z' do
begin
a1[s]:=0;
end;
s1:=memo1.Text;
for i:=1 to length(s1) do
begin a1[s1[i]]:=a1[s1[i]]+1;
end ;end;
可以利用字符为数组下标
var
a1:array ['A'..'z'] of integer;
s:char;
s1:string;
i:integer;
begin for s:='A' TO 'z' do
begin
a1[s]:=0;
end;
s1:=memo1.Text;
for i:=1 to length(s1) do
begin a1[s1[i]]:=a1[s1[i]]+1;
end ;end;
var EnArray:Array['A'..'Z'] of Integer;
procedure MemoText(Text:String;var EnArray:Array of Integer);
var
Index:Integer;
CharIndex:Char;
begin
for CharIndex:='A' to 'Z' do
begin
EnArray[CharIndex]:=0;//初始化
end;
for Index:=0 to Strlen(PChar(Text)) do
begin
Inc(EnArray[Text[Index]]);
end;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
var
Text:String;
begin
Text:=Memo1.text;
MemoText(Text,EnArray);
end;
第一,如果是函数调用的话,应该先把数组定义成类型,如果象你在函数中那么写的话根本就不识别字符下标
第二,我定义的是['A'..'z']注意,是小写的z
而你定义的是['A'..'Z']大写的Z,运行的时候当然出错,我在线上等你到11点,你有什么问题的话可以问
type InterArray=Array of Integer;
EnArray:Array['A'..'Z'] of Integer;
procedure MemoText(Text:String;var EnArray:InterArray);
var
Index:Integer;
CharIndex:Char;
begin
for CharIndex:='A' to 'Z' do
begin
EnArray[strtoint(CharIndex)]:=0;//初始化
end;
for Index:=0 to Strlen(PChar(Text)) do
begin
Inc(EnArray[strtoint(Text[Index])]);
// EnArray[Text[Index]]:=EnArray[Text[Index]]+1;
end;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var
AfterCode:String;
HufTree:HufArray;
Buffer:Array[0..10240] of Char;
begin
MemoText(Memo1.Lines.Text,EnArray);
end;
type InterArray=['A'..'z'] Array of Integer;procedure MemoText(Text:String;var EnArray:InterArray);
var
Index:Integer;
CharIndex:Char;
begin
for CharIndex:='A' to 'z' do
begin
EnArray[strtoint(CharIndex)]:=0;//初始化
end;
for Index:=0 to Strlen(PChar(Text)) do
begin
Inc(EnArray[strtoint(Text[Index])]);
// EnArray[Text[Index]]:=EnArray[Text[Index]]+1;
end;
end;注意:是小z
应该是这样的//定义类型
type
InterArray=Array ['A'..'z'] of Integer;
//函数
procedure MemoText(Text:String;var EnArray:InterArray);
var
Index:Integer;
CharIndex:Char;
begin
for CharIndex:='A' to 'z' do
begin
EnArray[CharIndex]:=0;//初始化
end;
for Index:=0 to Strlen(PChar(Text)) do
begin
Inc(enarray[Text[Index]]);
// EnArray[Text[Index]]:=EnArray[Text[Index]]+1;
end;
end;
调用(我用的是buttonclick事件)
procedure TForm1.Button1Click(Sender: TObject);
var
array1:InterArray;
begin
MemoText(memo1.Text,array1);
end;