AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String Vergleichen.... function - funktioniert nicht...
Thema durchsuchen
Ansicht
Themen-Optionen

String Vergleichen.... function - funktioniert nicht...

Ein Thema von spacewolf · begonnen am 13. Jan 2006 · letzter Beitrag vom 19. Jan 2006
Antwort Antwort
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#1

String Vergleichen.... function - funktioniert nicht...

  Alt 13. Jan 2006, 22:35
Moin,

hab ne interessante Funktion im swissdelphicenter gefunden.
Aber die Funzt net... Vielleicht lade ich die falschen units ?

???uses math ???
Dazu macht der Autor keine Angabgen.

Die Funktion soll zwei strings vergleichen und die prozentzahl der "gleichheit" zurückgeben...

weiß jemand wie man die funktion zum laufen bringt...

euer Andreas

PS: hier noch die funktion

Delphi-Quellcode:
function CompareStringsInPercent(Str1, Str2: string): Byte;
type
  TLink = array[0..1] of Byte;
var
  tmpPattern: TLink;
  PatternA, PatternB: array of TLink;
  IndexA, IndexB, LengthStr: Integer;
begin
  Result := 100;
  // Building pattern tables
  LengthStr := Max(Length(Str1), Length(Str2));
  for IndexA := 1 to LengthStr do
  begin
    if Length(Str1) >= IndexA then
    begin
      SetLength(PatternA, (Length(PatternA) + 1));
      PatternA[Length(PatternA) - 1][0] := Byte(Str1[IndexA]);
      PatternA[Length(PatternA) - 1][1] := IndexA;
    end;
    if Length(Str2) >= IndexA then
    begin
      SetLength(PatternB, (Length(PatternB) + 1));
      PatternB[Length(PatternB) - 1][0] := Byte(Str2[IndexA]);
      PatternB[Length(PatternB) - 1][1] := IndexA;
    end;
  end;
  // Quick Sort of pattern tables
  IndexA := 0;
  IndexB := 0;
  while ((IndexA < (Length(PatternA) - 1)) and (IndexB < (Length(PatternB) - 1))) do
  begin
    if Length(PatternA) > IndexA then
    begin
      if PatternA[IndexA][0] < PatternA[IndexA + 1][0] then
      begin
        tmpPattern[0] := PatternA[IndexA][0];
        tmpPattern[1] := PatternA[IndexA][1];
        PatternA[IndexA][0] := PatternA[IndexA + 1][0];
        PatternA[IndexA][1] := PatternA[IndexA + 1][1];
        PatternA[IndexA + 1][0] := tmpPattern[0];
        PatternA[IndexA + 1][1] := tmpPattern[1];
        if IndexA > 0 then Dec(IndexA);
      end
      else
        Inc(IndexA);
    end;
    if Length(PatternB) > IndexB then
    begin
      if PatternB[IndexB][0] < PatternB[IndexB + 1][0] then
      begin
        tmpPattern[0] := PatternB[IndexB][0];
        tmpPattern[1] := PatternB[IndexB][1];
        PatternB[IndexB][0] := PatternB[IndexB + 1][0];
        PatternB[IndexB][1] := PatternB[IndexB + 1][1];
        PatternB[IndexB + 1][0] := tmpPattern[0];
        PatternB[IndexB + 1][1] := tmpPattern[1];
        if IndexB > 0 then Dec(IndexB);
      end
      else
        Inc(IndexB);
    end;
  end;
  // Calculating simularity percentage
  LengthStr := Min(Length(PatternA), Length(PatternB));
  for IndexA := 0 to (LengthStr - 1) do
  begin
    if PatternA[IndexA][0] = PatternB[IndexA][0] then
    begin
      if Max(PatternA[IndexA][1], PatternB[IndexA][1]) - Min(PatternA[IndexA][1],
        PatternB[IndexA][1]) > 0 then Dec(Result,
        ((100 div LengthStr) div (Max(PatternA[IndexA][1], PatternB[IndexA][1]) -
          Min(PatternA[IndexA][1], PatternB[IndexA][1]))))
      else if Result < 100 then Inc(Result);
    end
    else
      Dec(Result, (100 div LengthStr))
  end;
  SetLength(PatternA, 0);
  SetLength(PatternB, 0);
end;
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: String Vergleichen.... function - funktioniert nicht...

  Alt 13. Jan 2006, 22:40
Denkst du nicht auch, dass eine Fehlerangabe für uns hilfreich sein könnte?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#3

Re: String Vergleichen.... function - funktioniert nicht...

  Alt 13. Jan 2006, 22:42
Zitat:
??uses math ???
Dazu macht der Autor keine Angabgen.
Die braucht's auf jeden Fall.

Was genau meinst du mit "funzt net"?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: String Vergleichen.... function - funktioniert nicht...

  Alt 13. Jan 2006, 22:44
Zitat von spacewolf:
???uses math ???
Dazu macht der Autor keine Angabgen.
Das ist eine Unit von Borland, die mathematische Funktionen beinhaltet. Einfach unter den uses eintragen und das Ding ist eingebunden.

Wir hätten
hier auch eine Funktion, die 2 Strings vergleicht.
  Mit Zitat antworten Zitat
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#5

da kommt meistens 100% raus...

  Alt 19. Jan 2006, 08:02
Bitte um Verzeihung... bin etwas abwesend gewesen...
das Eheleben ist halt schon anders... als früher:

 while not 1=2 do :coder: // heute gibts breaks or so... ;-) ok... jetzt zum "funzt net..." = funktioniertn nicht...

also wenn ich einen zwei längere Texte übergebe... dann kommt da meißtens nur 100% raus...
naja, hab schon überlegt das es an den Sonderzeichen liegt wie #9 oder #13 oder #10 für Tab und Zeilenumbrüche...
aber das geht trotzdem nich...

vielleicht hat jemand von euch eine gute Idee or so... was ich da falsch mache...
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz