Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Move und FillChar bei strings.

  Alt 8. Jun 2014, 08:56
Delphi-Version: 2007
Ich hab manche Routinen die Geschwindigkeitsoptimiert sind und verwende da deshalb (gelegentlich) eigene Stringlisten (FItems: array of string). Jetzt wollte ich mal fragen ob die Moves und FillChars so richtig sind und ob der Compiler was mit SizeOf(string) anfangen kann?
Delphi-Quellcode:
procedure TMyStringList.Insert(const Index: integer; const Value: string);
var
  N: integer;
begin
  SetCount(FCount + 1);
  if Index < FCount - 1 then
  begin
    N:= (FCount - 1 - Index) * SizeOf(string);
    Move(FItems[Index], FItems[Index + 1], N);
    FillChar(FItems[Index], SizeOf(string), 0);
  end;
  FItems[Index] := Value;
end;

procedure TMyStringList.Delete(const Index: integer);
var
  N: integer;
begin
  if Index < FCount - 1 then
  begin
    N:= (FCount - 1 - Index) * SizeOf(string);
    Move(FItems[Index + 1], FItems[Index], N);
    FillChar(FItems[FCount - 1], SizeOf(string), 0);
  end;
  SetCount(FCount - 1);
end;
  Mit Zitat antworten Zitat