这是字符串相似比较的代码,我想问问怎样制作成DLL让其它语言调用?function EditDistance(s, t: string): integer;
var
  d : array of array of integer;
  i,j,cost : integer;
begin
  {
  Compute the edit-distance between two strings.
  Algorithm and description may be found at either of these two links:
  http://en.wikipedia.org/wiki/Levenshtein_distance
  http://www.google.com/search?q=Levenshtein+distance
  }  //initialize our cost array
  SetLength(d,Length(s)+1);
  for i := Low(d) to High(d) do begin
    SetLength(d[i],Length(t)+1);
  end;  for i := Low(d) to High(d) do begin
    d[i,0] := i;
    for j := Low(d[i]) to High(d[i]) do begin
      d[0,j] := j;
    end;
  end;  //store our costs in a 2-d grid  
  for i := Low(d)+1 to High(d) do begin
    for j := Low(d[i])+1 to High(d[i]) do begin
      if s[i] = t[j] then begin
        cost := 0;
      end
      else begin
        cost := 1;
      end;      //to use "Min", add "Math" to your uses clause!
      d[i,j] := Min(Min(
                 d[i-1,j]+1,      //deletion
                 d[i,j-1]+1),     //insertion
                 d[i-1,j-1]+cost  //substitution
                 );
    end;  //for j
  end;  //for i  //now that we've stored the costs, return the final one
  Result := d[Length(s),Length(t)];  //dynamic arrays are reference counted.
  //no need to deallocate them
end;

解决方案 »

  1.   

    string改为Pchar,stdcall调用方式
      

  2.   

    呵呵,谢谢bhmh
    说的真的,我以前也是犯这个错误的
      

  3.   

    new-other-DLL wizard,写导出函数,网上搜一下,一大把
      

  4.   

    新建一个dll工程file->new->other->DLL wizard
    把你代码全部移到dll里面,然后Project->Compile/Build就OK了dll里面大概像这样:
    uses ...;function EditDistance(s, t:PChar):integer;stdcall;
    begin
    ...你的代码
    end;exports  
    EditDistance;begin
    end.