有如下数据:
AJ
AI
AO
OI
IO
AD
.....
每条数据以A开头,我想知道有多少条数据,以及每条数据的信息(已经知道有多少行!)
例如:
AK
AD
AM
IO
AP
以上共有四条数据,分别为AK,AD,AMIO,AP。如果有很多该如何处理???

解决方案 »

  1.   

    select * from tb1 where co1='A%'选出来以后按顺序看就知道了
      

  2.   

    数据不在数据库中,在TStringList中
      

  3.   

    >>数据不在数据库中,在TStringList中存到数据库,再分析
      

  4.   

    笨办法.遍历整个TStringList.并将符合要求的写入新的TStringList
    var
    s,s1:  TStringList; //s 为你的TstringList
    i:integer;
    ...  s1:= TStringList.create;
      for i:=0 to s.Count-1 do
      begin
         if s.Strings[i][1]='A' then
              s1.Add(s.Strings[i]);
      end;//s1为新的符合条件的数据,其中s1.Count条数
      

  5.   

    to keiy:可以,那第一个字符不为A的行不没了吗?
      

  6.   

    那第一个字符不为A的行不没了吗===============不是想要A开头的数据吗?是不是A前面有空格的记录也要?
      

  7.   

    看楼主的例子(如果不是手误的话)楼主的意思是不是要实现不是A开头的行需要合并到最近的那个A开头的行后面啊?如果是那样的话可以给你一段看上去极度精减实则效率极其低下的代码:// 假设数据源在Datas中并且结果也存到Datas中Datas.Text := StringReplace(StringReplace(StringReplace(Datas.Text, #13#10'A', #0#0#0, [rfReplaceAll]), #13#10, '', [rfReplaceAll]), #0#0#0, #13#10'A', [rfReplaceAll]);
      

  8.   

    不管有多少行,一行一行分析,如果此行一第一个字母为'A',则单独列出此行,如果不为'A',则把此行添加到上面一行,直到读到首字母为'A'的行,再把上面的行写出来,可用递归或迭代来实现.
      

  9.   

    //我下面的程序希望可以帮上楼主的忙。
    function JoinStr(StrList:TStrings;Lines:Integer;FirstChar:Char):String;
    begin
      if Lines>1 then
      begin
        if Trim(StrList[Lines-1])[1]=FirstChar then
          Result:=JoinStr(StrList,Lines-1,FirstChar)+','+StrList[Lines-1]
        else
          Result:=JoinStr(StrList,Lines-1,FirstChar)+StrList[Lines-1]
      end
      else
        Result:=StrList[Lines-1];
    end;
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      ShowMessage(JoinStr(StringGrid1.Cols[1],StringGrid1.Cols[1].Count,'A'));
    end;
      

  10.   

    这么简单的问题也叫算法,晕
    procedure TForm1.Button1Click(Sender: TObject);
    var b,d:TStringList; i:integer;
    begin
        b:=TStringList.Create;
        d:=TStringList.Create;
        b.LoadFromFile('C:\1.txt');
        for i:=0 to b.Count-1 do
           //这句一定要加否则为空时直接取.Strings[i][1]会有异常 用copy(.Strings[i],1,1)可以不要这句
        if (b.Strings[i]<>'') and (b.Strings[i][1]='A') and (d.IndexOf(b.Strings[i])<0) then
        d.Add(b.Strings[i]);
        d.SaveToFile('C:\2.txt');
        b.Free;
        d.Free;
        ShowMessage('ok');
    end;