Thema: Delphi Pos funktion

Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Pos funktion

  Alt 11. Dez 2004, 23:45
Vorweg: Ich bin überhaupt kein Pointerfachmann und bin mit dem "richtigen" Pos ganz zufrieden.

Ich frage mich nur, warum du ständig die Größe des Strings ändern willst? Das da dürfte doch auch reichen.
Delphi-Quellcode:
function Pos(const aSubString, aString: string;
             const aCaseSensitive : Boolean = False): Integer;
var
   CurrentPosition :Integer;
   pContent, pTempContent :PChar;
   pSearch , pTempSearch :PChar;
begin
   if aCaseSensitive then
   begin
      pContent := PChar(aString);
      pSearch := PChar(aSubString);
   end
   else
   begin
      pContent := PChar(AnsiUpperCase(aString));
      pSearch := PChar(AnsiUpperCase(aSubString));
   end;

   Result := -1;
   CurrentPosition := 1; // EDIT: das "richtige" Pos liefert die Position basierend auf 1 ;)

   while pContent^ <> #0 do
   begin
      if pContent^ = pSearch^ then
      begin
         pTempContent := pContent;
         pTempSearch := pSearch;

         while (pTempSearch^ <> #0) and (pTempSearch^ = pTempContent^) do
         begin
            Inc(pTempContent);
            Inc(pTempSearch);
         end;

         // Suchstring wurde bis zum #0 durchlaufen -> Match
         if pTempSearch^ = #0 then
         begin
            Result := CurrentPosition;
            Break;
         end;
      end;

      Inc(CurrentPosition);
      Inc(pContent);
   end;
end;
  Mit Zitat antworten Zitat