举例:
文件名:copyFiles 
文件内容:copy1 :略
          copy2 :略
          copy3 : 略
          。。
          copy1000:略
输入:copy55 则打开文件copyFiles(这点请不用理会),并定位到copy55所在的行用shellExecute()貌似只能打开文件 ,要让光标定位的话咋整,有啥API函数可用啊?

解决方案 »

  1.   

    简单说,
    起因:现在有个软件:输入文本文件名(copyFiles)就会帮你打开对应的文件。打开文本文件后,如果内容很多,你要找到想要看的copyN,就需要下拉去找,或者ctrl+F查找定位。太麻烦了。
    所以我想改进一下,输入copyN 一打开这个文件就直接定位到copyN.
    各位看官,我讲明白了吗?
      

  2.   

    你有“现在有个软件”这个软件的源代码吗?1.如果有,看看显示 copyFiles 的文件内容的组件是什么组件,然后才能对症下药(想办法)。2.如果没有源代码,只有 EXE 程序的话,用消息定位吧,那也要看实际情况的。
      

  3.   


    var
      slFile: TStringList;
      I: INteger;
    begin
      slFile := TStringList.Create;
      slFile.LoadFromFile(copyFiles);
      for I := 0 to slFile.Count - 1 do begin
        if Pos('CopyN', slFile[I]) > 0 then begin
          ....
        end;
      end;
      slFile.Free;
    end;
    不知道是不是这个意思
      

  4.   


    我有source的,输入文件名copyFiles后(它是.TXT类型的),source中调用ShellExecute 执行后
    windows的记事本程序就打开了copyFiles文件
      

  5.   


    有这个意思 我的问题在于你代码中的“....”
    就是说已经用记事本打开了文件copyFiles了,怎么让光标定位到copyN(或者打开了就直接定位)
    相当于windows里ctrl+f 查找功能,一旦找到目标就会使光标走到目标处
    这样说,还有谁不明白的话,我就要疯了
      

  6.   

    明白是明白了。我的建议是:1. 修改 source ,用 source 来打开那个文本文件,这样在自己程序的组件里面定位光标就实在太简单了。2. 如果一定要在 记事本 上定位光标,那要涉及到一系列的 API 调用,要麻烦很多的。
      

  7.   


    source 里就用shellexecute 函数啊,没啥组件啊,大哥,能不能讲的通俗易懂又具体点啊另,学习api这些东西有没有什么推荐的书啊??
      

  8.   

    在 source 的窗体上加上一个 TMemo,用 TMemo 组件来载入文本文件procedure TForm2.Button1Click(Sender: TObject);
    var
      i: Integer;
      s,n: String;
    begin
      Memo1.Lines.LoadFromFile('c:\1.txt');
      s := Memo1.Text;
      n := Trim(Edit1.Text);
      i := Pos(n,s);
      if i < 1 then Exit;
      Memo1.SetFocus;
      Memo1.SelStart := i - 1;
      Memo1.SelLength := Length(n);
    end;Edit1 就输入 copyN 就可以了。
      

  9.   

    在shellexecute的地方,用自己的MEMO控件来显示文本嘛,干嘛要用系统的记事本呢
      

  10.   

    不是太合我意啊,最好是API调用之类的