Du könntest auch mal schauen, ob vielleicht die
Levenshtein-Distanz etwas für dich wäre. Die paar Zeilen C-Code lassen sich ja schnell nach Delphi übertragen.
Bis denn
Bommel
Edit: Ich wusste doch, ich hatte das schon mal irgendwann gemacht...
Delphi-Quellcode:
function Levenshtein (string1, string2: string): integer;
var matrix: array of array of integer;
i,j,cost: integer;
compArray: array[0..2] of integer;
begin
SetLength(matrix,length(string1)+1,length(string2)+1);
for I := 0 to length(string1) do
matrix[i,0]:=i;
for j := 0 to length(string2) do
matrix[0,j]:=j;
for I := 1 to length(string1) do
for j := 1 to length(string2) do begin
if string1[i]=string2[j] then
cost:=0
else
cost:=1;
compArray[0]:=matrix[i-1,j]+1;
compArray[1]:=matrix[i,j-1]+1;
compArray[2]:=matrix[i-1,j-1]+cost;
matrix[i,j]:=MinIntValue(compArray);
end;
Result:=matrix[length(string1),length(string2)];
end;
Um ein sinnvolles Ergebnis zu bekommen, könntest du dann das Ergebnis der Funktion noch in Relation zur Anzahl der Zeichen eines der Strings setzen und hättest dann sowas wie ein prozentuale Abweichung.
Edit2:
Hier in der CodeLib gibt es auch noch eine Umsetzung.