AGB  ·  Datenschutz  ·  Impressum  







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

Array Zeile löschen

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

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

AW: Array Zeile löschen

  Alt 5. Mär 2012, 18:34
Zitat von VkPenguin:
Ist es denn schwierig mein Programm auf die Verwendung von Listen umzubauen?
Nein. Listen sind zudem viel schneller und komfortabler als dynamische Arrays. Du musst nur darauf achten, den reservierten Speicher wieder freizugeben, ansonsten entsteht ein Speicherleck.

Hier ein einfaches Beispiel:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  PGegnerRecord = ^TGegnerRecord;
  TGegnerRecord = record
   Name:AnsiString;
   PosX:Integer;
   PosY:Integer;
   {...}
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

  Gegnerliste:TList;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Gegnerliste:=TList.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var i:Integer;
Begin
 For i:=Gegnerliste.Count-1 downto 0 do //Löschen von Einträgen
    Dispose(PGegnerRecord(Gegnerliste.Items[i])); //Speicher wieder freigeben!

 Gegnerliste.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var GegnerRec:PGegnerRecord;
    index:Integer;
begin
 New(GegnerRec); //Speicher reservieren
 Gegnerliste.Add(GegnerRec);
 index:=Gegnerliste.Count;
 GegnerRec.Name:='Gegner'+IntToStr(index);
 GegnerRec.PosX:=index;
 GegnerRec.PosY:=30;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var i:Integer;
begin
 For i:=0 to Gegnerliste.Count-1 do
     ShowMessage(TGegnerRecord(Gegnerliste[i]^).Name);
end;
  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 07:23 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