Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: "array-Einträge" nicht doppelt auslesen

  Alt 23. Mai 2006, 20:48
Stimmt, die Lösung von himitsu ist die effizienteste. Der Compiler war aber noch nicht ganz zufrieden. Hier die Korrektur mit einigen Sicherheitsabfragen:

Delphi-Quellcode:
type
  TDynStrArray = array of string;

procedure DeleteEntry(var pArray: TDynStrArray; pPos: integer);
begin
  // DAU-Schutz ;-)
  if ((pPos < 0) or (pPos > High(pArray))) then
    exit;
  // String löschen
  pArray[pPos] := '';
  // die nötigen StringPointer verschieben
  if (pPos < High(pArray)) then
    Move(pArray[pPos + 1], pArray[pPos], (High(pArray) - pPos) * SizeOf(Pointer));
  // letzten Pointer löschen ... dieser wurde ja eine Stelle vorkopiert
  Pointer(pArray[High(pArray)]) := nil;
  // Array verkleinern
  SetLength(pArray, High(pArray));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat