AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Aus Dynamischen Array Hersusschneiden.
Thema durchsuchen
Ansicht
Themen-Optionen

Aus Dynamischen Array Hersusschneiden.

Ein Thema von shifter · begonnen am 3. Sep 2006 · letzter Beitrag vom 3. Sep 2006
Antwort Antwort
Seite 2 von 2     12   
Hawkeye219

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

Re: Aus Dynamischen Array Hersusschneiden.

  Alt 3. Sep 2006, 13:30
Verlasse dich nicht allzu sehr auf die Anzeige im Taskmanager. Der MemoryManager von Delphi könnte die Speicherblöcke durchaus noch reserviert haben, um sie bei nachfolgenden Anforderungen wieder zur Verfügung zu stellen. In diesem Fall wird sich der angezeigte Wert im Taskmanager kaum ändern.

Einen Hinweis auf tatsächliche MemLeaks erhältst du, wenn du die Projektdatei folgendermaßen erweiterst:

Delphi-Quellcode:
begin
  {$WARN SYMBOL_PLATFORM OFF}                       // <<-- diese Zeile hinzufügen
  ReportMemoryLeaksOnShutdown := (DebugHook <> 0); // <<-- diese Zeile hinzufügen
  Application.Initialize;
  ...
end.
Wenn du jetzt dein Programm in der Delphi-IDE laufen läßt, erscheint beim Beenden eine Dialogbox mit Hinweisen auf MemLeaks, sofern welche vorhanden sind. Besonders informativ ist die Anzeige leider nicht. Sie zeigt nur an, daß nicht alle angeforderten Speicherblöcke zurückgegeben wurden, aber nicht, wo dies passiert. Um diese Stellen zu finden, wirst du andere Werkzeuge einsetzen müssen. In der DP gibt es einige Threads zu diesem Thema.

Gruß Hawkeye
  Mit Zitat antworten Zitat
shifter

Registriert seit: 2. Jan 2005
175 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Aus Dynamischen Array Hersusschneiden.

  Alt 3. Sep 2006, 19:07
Danke für Dein Tip,

ich habe exack so wie du es beschrieben gemacht,
leider bekomme ich nichts raus, also kein DialogBox oder ne meldung.

seba
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#13

Re: Aus Dynamischen Array Hersusschneiden.

  Alt 3. Sep 2006, 19:49
Zitat von Hawkeye219:
..., sofern welche vorhanden sind.
Dann sind höchstwahrscheinlich keine MemLeaks vorhanden

Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: Aus Dynamischen Array Hersusschneiden.

  Alt 3. Sep 2006, 19:57
Also ich weiß nicht obs schon gesagt wurde aber ich mache es einfach so:

Delphi-Quellcode:
procedure DeleteItem(var AArray: TArrayofKa; Index: Integer);
var tmp: TArrayofKa;
    i,j: Integer;
begin
  j:= 0;
  SetLength(tmp,Length(AArray)-1);
  for i:= 0 to High(AArray) do
   if i <> Index then
   begin
    tmp[j] := AArray[i];
    inc(j);
   end;
   AArray := tmp;
end;
So in etwa

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#15

Re: Aus Dynamischen Array Hersusschneiden.

  Alt 3. Sep 2006, 20:58
Da finde ich Move aber ein wenig eleganter .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
MStoll

Registriert seit: 15. Nov 2005
131 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Aus Dynamischen Array Hersusschneiden.

  Alt 3. Sep 2006, 22:32
Hallo

Warum so kompliziert?

Delphi-Quellcode:
procedure delete_arr_item(var arr : tbyte_arr; idx : integer); overload;
var x : integer;
begin
     for x := idx + 1 to high(arr) do
         arr[x-1] := arr[x];
     SetLength(arr, length(arr) - 1)
end;
Ist vll nicht die schnellste, aber sicher eine der kürzesten Varianten.

[Edit]Allerdings lässt sie alle Elemente "in Ruhe", die eh nicht verändert werden (d.h. die mit einem Index < als idx)[/Edit]

Gruß
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz