各位大侠,我的Oracle 数据库里面的字段是jxjh医学文献检索-24#社会医疗保险-12  //课程名称-学时#课程名称-学时#课程名称-学时
医学创造学-24
........怎样把课程名称  学时分别取出来?
例如:医学文献检索  
   24
   社会医疗保险
   12共4条数据.
----------
   医学创造学 
   24
.........
先谢谢各位了!!!

解决方案 »

  1.   

    s := FieldByName(fieldname).asstring;
    copy(s,1,Pos('-',s) - 1);
    copy(s,pos('-',s) + 1,Length(s) - Pos('-',s);
      

  2.   

    回复:zzq4823(高原猫)关键数据库不是我们设计的.而且我们也改不了数据库的字段!!!所以没办法只能用截断字符串的方法!!!但是 不知道怎么做!请高手指点
      

  3.   

    用TStringList设置
    Delimiter:=#;
    DelimitedText:=数据库中取出的字段值
    取出每一个以#分割的字符串
    然后在字符串中用Pos定位“-”字符,分别取出课程名称与课时

      

  4.   

    zzq4823(高原猫) 
    我照着你的方法试了一下,但是好象不能实现分割字符串我的代码如下:
    procedure TForm1.Button3Click(Sender: TObject);
    var
    a1: TStringList;
    begin
    a1:= TStringList.Create;
    a1.Delimiter:='#';
    a1.DelimitedText:=ADOQuery1.FieldValues['xxkcmc'];
    showmessage(a1.DelimitedText);
    a1.Free;
    end;
    end.show出来的信息 仍然是:医学文献检索-24#社会医疗保险-12  并没有实现分割?
      

  5.   

    我的代码如下:
    procedure TForm1.Button3Click(Sender: TObject);
    var
    a1: TStringList;
    begin
    a1:= TStringList.Create;
    a1.Delimiter:='#';
    a1.DelimitedText:=ADOQuery1.FieldValues['xxkcmc'];
    showmessage(a1.DelimitedText);
    a1.Free;
    end;
    end.show出来的信息 仍然是:医学文献检索-24#社会医疗保险-12  并没有实现分割?
    ------------------------------------------------------------------------
    showmessage(a1.DelimitedText);改为showmessage(a1.Text);
    再看看撒
      

  6.   

    zzq4823(高原猫) 我已经搞定了 show的时候我搞错了
    应该是:showmessage(a1[0]);showmessage(a1[1]);
    但是这里有个问题:
    像  医学创造学-24  没有#  把它show出来的时候就出错了!有什么好的办法解决?
    能不能这样  用一个函数先判断是否有"#" ?
    可以的话  是什么函数呢?
    或许有没更简单的方法?
      

  7.   

    能不能这样  用一个函数先判断是否有"#" ?
    可以的话  是什么函数呢?--------------------------------
    if  pos('#',s) > 0 then
    showmessage('有#');