AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

A/V bei löschen von Element in Array

Ein Thema von WorstNightmare · begonnen am 16. Jul 2010 · letzter Beitrag vom 17. Jul 2010
 
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#1

A/V bei löschen von Element in Array

  Alt 16. Jul 2010, 22:59
Delphi-Version: 2010
Hallo,

ich habe eine eigene StringListen Klasse für Plugin-DLLs geschrieben, damit ich Classes nicht einbinden muss (und sie somit nicht so aufgebläht werden). Die Liste bietet außerdem einige Extra-Funktionen, z.B. einen Filter darauf anzuwenden, d.h. alle Elemente die Filter nicht enthalten werden gelöscht.

Delphi-Quellcode:
procedure TCSList.ApplyFilter(F: string);
var
  i: Integer;
begin
  for i := 0 to Count - 1 do
    if Pos(F, FArray[i]) = 0 then
      if i = Count - 1 then
        SetLength(FArray, Count - 1)
      else
      begin
        Move(FArray[i + 1], FArray[i], (Count - 1 - i) * 4); // String = 4 Byte Pointer
        SetLength(FArray, Count - 1);
        ApplyFilter(F); // Count geändert, Schleife neustarten
        Exit;
      end;
end;
Das ganze basiert auf einem array of string (FArray), Count gibt einfach nur Length(FArray) aus. Das Problem ist, dass nach einem Durchlauf der Speicher irgendwie korrumpiert wird, denn plötzlich tauchen im Array noch andere Strings die irgendwo in der DLL vorkommen auf und irgendwann ist es dann so kaputt, dass eine A/V geworfen wird.

Vielleicht mögen die String-Pointer es nicht rumgeschoben zu werden? Ich konnte den Fehler nicht finden
  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 20:38 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