AGB  ·  Datenschutz  ·  Impressum  







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

Simple Frage zu Funktionen

Ein Thema von .chicken · begonnen am 1. Dez 2007 · letzter Beitrag vom 6. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Simple Frage zu Funktionen

  Alt 1. Dez 2007, 20:30
Aehm mir is da grad was durchn Kopf gegangen und irgendwie war ich mir nichmehr sicher wie es denn nun richtig ist.

Mal angenommen ich habe eine Klasse TPlayer und eine Klasse TPlayerArray.
TPlayerArray enthaelt ein Array von TPlayer. Wenn ich nun in einer Funktion von TPlayerArray per ID als result einen der TPlayer im Array ausgebe, und den verändere, werden dann die Player im Array veraendert? Oder wird durch das Result eine neue Instanz dieses TPlayers erzeugt (was ich vermute).

Danke schonmal!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 20:34
Kommt darauf an, wie du das machst.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 20:35
Kommt ein bisschen drauf an, wie du das baust.

Delphi-Quellcode:
type
  TPlayer = record
    Key: Integer;
  end;

  TPlayerArray = class
  private
    FPlayers = array of Players;
  public
    function GetPlayer(Id: Integer): TPlayer;
  end;

implementation

function TPlayerArray,GetPlayer(Id: Integer): TPlayer;
begin
  Result := FPlayers[Id];
end;
In dem Fall sollte kopiert werden.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 20:35
Wenn TPlayer eine Klasse ist und in einem TPlayerArray Instanzen dieser Klasse liegen, dann speichert das Array nur die Pointer auf den Adressraum der jeweiligen Instanz. Soll heissen, du gibst nur die Kopie des Pointers weiter, der aber zum originalen Adressraum zeigt. Es wird also auch die Instanz im Array geändert, weil es ja die selbe Instanz ist, auf die der kopierte Pointer zeigt.

Anders ist das bei Records. Wenn du da nicht explizit die Pointer zu den Records ablegst kopierst du die Records samt Daten anstelle der Pointer.
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#5

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 20:56
Delphi-Quellcode:
type
  TPlayer = class
  private
  public
    name: string;
  end;

  TPlayerArray = class
  private
    FPlayers = array of Players;
  public
    function GetPlayer(Id: Integer): TPlayer;
  end;

implementation

function TPlayerArray,GetPlayer(Id: Integer): TPlayer;
begin
  Result := FPlayers[Id];
end;
Also wenn ich das so aufbaue und dann folgendes aufrufe:
GetPlayer(5).name := 'Hans Meyer'; Dann wird der Name des Players mit der ID 5 in 'Hans Meyer' geändert?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 20:59
Ja, weil ja eine Referenz(Zeiger) zurückgegeben wird
Markus Kinzler
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#7

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 21:25
Super, danke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 22:09
Warum machst du nur den halben Schritt? Anstatt des Arrays würde ich eine typisierte Liste nehmen: Container-Klassen in Delphi
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#9

Re: Simple Frage zu Funktionen

  Alt 1. Dez 2007, 23:21
Seh ich mir morgen an, danke Bin gespannt was das is, aber jetzt muss ihc pennen, muss morgen relativ früh raus Danke für die Info!
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#10

Re: Simple Frage zu Funktionen

  Alt 5. Dez 2007, 20:54
So, habs mir angesehn. Letztendlich mache ich es glaube ich so, dass ich mir die Funktionen die ich von der Liste bräuchte selbst schreibe und dann halt ein Array benutze. Komme damit ganz gut klar, und da das ganze nicht zu umfangreich ist geht das glaube ich so auch ganz gut, oder warum sollte ich umsteigen?

Aber eine Frage habe ich. Wenn ich nun das PlayerArray habe und eine Instanz davon erstelle
PlayerArray := TPlayerArray.create; Dann möchte ich die Möglichkeit haben mit
PlayerArray[i] := xx; Auf die ArrayEinträge zugreifen zu können, ohne immer folgendes machen zu müssen
Delphi-Quellcode:
PlayerArray.Player[i] := xx;
//oder
PlayerArray.ByIndex(i) := xx;
Wie realisiere ich das? Hoffe ihr versteht was ich meine?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:53 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