AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Stringvergleich nicht wie gewünscht
Thema durchsuchen
Ansicht
Themen-Optionen

Stringvergleich nicht wie gewünscht

Ein Thema von padavan · begonnen am 6. Okt 2005 · letzter Beitrag vom 7. Okt 2005
 
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#29

Re: Stringvergleich nicht wie gewünscht

  Alt 7. Okt 2005, 06:37
ich hab keine ahnung, wieso comparestring sich so verhaelt, wie du es berichtest.
entweder liefert die funktion nicht das verhalten, das du brauchst, oder du interpretierst die rueckgabewerte falsch.

ich wuerde eine funktion schreiben, die nur fuer byteidentische strings 0 zurueckgibt. fuer alle anderen faelle wird die bytedifferenz der ersten ungleichen zeichen zurueckgegeben. bei ungleichlangen strings wird eventuell die differenz des ersten ueberlangen zeichens zum null-zeichen zurueckgegeben.

damit verhaelt sich die funktion, die ich schreiben wuerde, nahezu identisch zum C aequivalent strcmp(). einziger unterschied: strcmp() returnt nur -1, 0 oder 1 waehrend ich auch <-1 und >1 zurueckgeben wuerde.

uebrigens:
"stringa = stringb" tut genau was du willst.
gross/kleinschreibung wird beachtet und auch die laenge.

Delphi-Quellcode:
function strcmp(a, b: string): integer;
{ strcmp(foo,foo) = 0
  strcmp(FOO,foo) = -32
  strcmp(foo,faa) = 14
  strcmp(faa,foo) = -14
  strcmp(foox,foo) = 120
  strcmp(foo,foox) = -120 }

var
   i: integer;
   c,d: byte;
begin
   result := 0;
   i := 1;
   repeat
      if a[i] <> b[i] then
      begin
         result := ord(a[i]) - ord(b[i]);
      end;
      inc(i);
   until (i > length(a)) or (i > length(b));

   if length(a) > length(b) then
      result := ord(a[length(b)+1])
   else if length(a) < length(b) then
      result := -ord(b[length(a)+1]);
   { ANSI C behaviour compatibility: }
   { result := byte(result > 0) - byte(result < 0); }
end;
Christoph
  Mit Zitat antworten Zitat
 


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 23:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz