//memo控件没有parent,这样修改:
function Insertstr(sChar:string;sMemo:TMemo;AWoner:TComponent):string;  
var
    i:integer;
    vMemo:Tmemo;
Begin
   vMemo:=Tmemo.create(AWoner);
  If sMemo.lines.count<=1 then
    Begin
      result:=sMemo.text ;
      Exit;
    End;
  for i:=0 to sMemo.Lines.Count-1 do
    Begin
      If pos(schar,sMemo.lines[i])=0 then
        vMemo.lines[i]:=sMemo.Lines[i]+sChar;
    End;
  Result:=vMemo.text;
End;

解决方案 »

  1.   

    //memo控件没有parent,这样修改:
    //用的时候传多一个参数 AWoner例如 thisfunction Insertstr(sChar:string;sMemo:TMemo;AWoner:TComponent):string;  
    var
        i:integer;
        vMemo:Tmemo;
    Begin
       vMemo:=Tmemo.create(AWoner);
      If sMemo.lines.count<=1 then
        Begin
          result:=sMemo.text ;
          Exit;
        End;
      for i:=0 to sMemo.Lines.Count-1 do
        Begin
          If pos(schar,sMemo.lines[i])=0 then
            vMemo.lines[i]:=sMemo.Lines[i]+sChar;
        End;
      Result:=vMemo.text;
    End;
      

  2.   

    //这样修改把vMemo free掉,不然会内存泄露function Insertstr(sChar:string;sMemo:TMemo;AWoner:TComponent):string;
    var
        i:integer;
        vMemo:Tmemo;
        tmp:string;
    Begin
       vMemo:=Tmemo.create(AWoner);
      If sMemo.lines.count<=1 then
        Begin
          result:=sMemo.text ;
          Exit;
        End;
      for i:=0 to sMemo.Lines.Count-1 do
        Begin
          If pos(schar,sMemo.lines[i])=0 then
            vMemo.lines[i]:=sMemo.Lines[i]+sChar;
        End;
        tmp:=vMemo.Text;
        vMemo.Free;
      Result:=tmp;
    End;
      

  3.   

    function InsertStr(mStr: string; mStrings: TStrings): string;
    var
      I: Integer;
    begin;
      Result := '';
      if not Assigned(mStrings) then Exit;
      if mStrings.Count < 0 then Exit;
      for I := 0 to mStrings.Count - 1 do
        if Pos(mStr, mStrings[I]) = 0 then
          Result := Result + mStrings[I] + mStr + #13#10
        else Result := Result + mStrings[I] + #13#10;
    end; { InsertStr }procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(InsertStr(Edit1.Text, Memo1.Lines));
    end;