Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: mein Vergleichen von Strings --> Bewertung

  Alt 7. Dez 2007, 09:07
Was meinst Du mit 'effizient'? Aus ästhetischen Gesichtpunkten würde ich sagen, das 'Pos' zu mächtig ist. Du möchstest nur wissen, ob ein Text mit einem anderen Text beginnt, Pos sucht aber den ganzen String durch.

Zum Prüfen, ob S in T vorkommt, reicht es, S mit T zu vergleichen, und zwar die ersten length(S) Zeichen. Das geht mit CompareMem sehr gut.

Hier mal eine Routine, die prüft ob ein String mit einem anderen anfängt. Sie ist doppelt so schnell wie Pos.

Delphi-Quellcode:
Function Beginswith(Const sSubStr, sString: String): Boolean;
Begin
  If Length(sString) = 0 Then
    Result := False
  Else If Length(sSubStr) > Length(sString) Then
    Result := False
  Else
    Result := CompareMem(@sSubstr[1], @sString[1], Length(sSubStr))
End;
Gemessen habe ich den Mittelwert zwischen Pos('AAA','AAABBBBBBBB') und Pos('XXX','AAABBBBBBBB').
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat