在一个Memo组件中有若干个英文字,如何统计这些文本中,从'A'到'Z',从‘a'到'z'的各个英文字的个数.最好能说明的详细一些

解决方案 »

  1.   

    首先做一个循环
    是从MEMO组件的第一行到最后一行
    再做一个循环,从第一行中的第一个字母到再后一个字母就可找出来
      

  2.   

    可以做两个从A到Z 和从a到z的集合然后用 copy函数一个字母一个字母的往后移设两个变量 和代表如果在A到Z的集合里变量加1从a到z的集合里变量加1的办法 很简单
    也可用取asc的办法也要用到copy也很好做
      

  3.   

    定义一个数组。'A'..'Z','a'..'z',是顺序型的结构。
    取Ascall, 65-97..把memo的 memo.line.text送给一个字符串变量.
    strfor i=1 to length(str) do
    begin
     str[i];
    在这里处理算法。
    end;
      

  4.   

    具体算法如下
    可以利用字符为数组下标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;
      

  5.   

    具体算法如下
    可以利用字符为数组下标
    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;
      

  6.   

    zzheaptech(风的往事):你写的那段代码不正确啊
      

  7.   

    怎么不正确,完全正确,我都运行了,你是不是忘写var了
      

  8.   

    这是我根据你的提示修改的。
    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;
      

  9.   

    你有两个错误
    第一,如果是函数调用的话,应该先把数组定义成类型,如果象你在函数中那么写的话根本就不识别字符下标
    第二,我定义的是['A'..'z']注意,是小写的z
    而你定义的是['A'..'Z']大写的Z,运行的时候当然出错,我在线上等你到11点,你有什么问题的话可以问
      

  10.   

    还是不正确。这是我又修改后的:
    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;
      

  11.   

    应该是这样
    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
      

  12.   

    刚才给你发的那个错了
    应该是这样的//定义类型
    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;