AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Array Zeile löschen

Ein Thema von VkPenguin · begonnen am 2. Mär 2012 · letzter Beitrag vom 7. Mär 2012
Antwort Antwort
Seite 3 von 3     123
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#21

AW: Array Zeile löschen

  Alt 7. Mär 2012, 20:01
Zitat von DeddyH:
Oder man macht Klassen draus und... hatten wir das nicht schon?
Es ging mir ja nur darum, dass es bei der von mir vorgeschlagenen Variante möglich ist, einzelne Werte des Records direkt zu ändern. Das New und Dispose brauche ich doch nur beim Hinzufügen (Add) oder Entfernen (Delete) von Items bzw. vor dem Freigeben (Free) der Liste, nicht jedoch beim Sortieren der Liste.

Ich glaube, im Endeffekt hat jede mögliche/hier genannte Lösung ihre Vor- und Nachteile. Jetzt muss man sich nur noch das rauspicken, was einem am meisten zusagt

Lg
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#22

AW: Array Zeile löschen

  Alt 7. Mär 2012, 21:09
... erst einmal vielen lieben Dank für eure Hilfe und Freundlichkeit - zuerst hab ich zwar nicht ganz verstanden, wovon ihr eigentlich redet, ich konnte mich aber dann gut anhand der Codebeispiele einfinden, danke noch einmal für die Mühe an dieser Stelle. Ich mach mich dann mal an den Umbau Melde mich, wenn es größere Probleme gibt oder wenn es geklappt hat.

*Edit* Funktioniert soweit wie ich gekommen bin gut; eine Frage hätte ich aber - wenn ich zwei Einheiten der Liste vergleichen will, also zwei gleichzeitig brauche, muss ich dann auch zwei temporäre "Gegner"-Variablen haben?
*Edit2* Hm, bekomme folgende Fehlermeldung:

---------------------------
Anwendungsfehler
---------------------------
Exception EArgumentOutOfRangeException in Modul SpaceInvaders042.exe bei 000B6205.

Argument out of range.
---------------------------
OK
---------------------------

Ich denke mal, dass bedeutet, dass die Liste nur sagen wir mal drei Einträge hat und ich nach dem vierten Frage..? Wir die Liste mit dem ".add"-Befehl nicht automatisch um eins erweitert? Das hatte ich so verstanden..
*Edit3* wenn ich es so "For I:=1 To Schussanzahl-1 Do" mache, geht es scheinbar. Fängt die Liste also schon bei 0 an zu zählen? Aber warum funktioniert dann der erste Schuss nicht?
*Edit4*...erst Denken.. mit For I:=0 To [...] geht es wunderbar. Werde mich am Wochenende weiter damit beschäftigen und (voraussichtlich) Rückmeldung geben. Danke nocheinmal!

Geändert von VkPenguin ( 7. Mär 2012 um 22:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.665 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: Array Zeile löschen

  Alt 7. Mär 2012, 22:39
Das Freigeben macht eine TObjectList von selber, wenn man es ihr sagt.

Delphi-Quellcode:
type
  TSimpleObjectList<T: class> = class(TList<T>)
  protected
    procedure Notify(const Value: T; Action: TCollectionNotification); override;
  public
    function Add: T; overload;
    function Insert(Index: Integer): T; overload;
  end;

function TSimpleObjectList<T>.Add: T;
begin
  Result := T.Create;
  inherited Add(Result);
end;

function TSimpleObjectList<T>.Insert(Index: Integer): T;
begin
  if (Index < 0) or (Index > Count) then
    Items[Index];
  Result := T.Create;
  inherited Insert(Index, Result);
end;

procedure TSimpleObjectList<T>.Notify(const Value: T; Action: TCollectionNotification);
begin
  try
    inherited;
  finally
    if Action = cnRemoved then
      Value.Free;
  end;
end;
Nunja, eine kleine Erweiterung und schon läßt sich auch mit einer TObjectList<T> angenehm arbeiten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf