AGB  ·  Datenschutz  ·  Impressum  







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

Array's in Klassen

Ein Thema von Corpsman · begonnen am 15. Mär 2006 · letzter Beitrag vom 16. Mär 2006
Antwort Antwort
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

Array's in Klassen

  Alt 15. Mär 2006, 17:25
Hi Ich habe da ein kleines Problem

Ich brauche die Möglichkeit ein Dynamisches Array als Parameter einer Function zu übergeben.

Das geht ja bekanntlich nicht.

Also dachte ich mir bastle ich ne Klasse die das darstellt. Gesagt getan.

Delphi-Quellcode:
Type
  TPencildata = Array[0..8] Of Boolean; // Bleibt Konstant dan mus es nicht auch noch zu einer Klasse werden !!

  Tsinglefield = Record
    Value: byte; // Die Zahl im Feld
    Fixed: Boolean; // Das Feld beinhaltet eine Nicht Löschbare Zahl !!
    Owner: byte; // Die zugehörigtkeit , zu den 9 er Gruppen
    Marked: Boolean; // Wenn True dann ist dieses Feld Entweder belegt oder won der Grad behandelten Routine als belegt gemerkt.
    Pencils: TPencildata; // Die Pencil Daten
  End;

  TNxNField = Class
  private
    Field: Array Of Array Of Tsinglefield;
    Function getvalue(x, y: integer): Byte;
    Procedure Setvalue(x, y: integer; z: Byte);
    Function getFixed(x, y: integer): Boolean;
    Procedure SetFixed(x, y: integer; z: Boolean);
    Function getOwner(x, y: integer): Byte;
    Procedure Setowner(x, y: integer; z: Byte);
    Function getMarked(x, y: integer): Boolean;
    Procedure SetMarked(x, y: integer; z: Boolean);
    Function getPencils(x, y, z: integer): Boolean;
    Procedure SetPencils(x, y, z: integer; Value: Boolean);
    Function GetPencilsdata(x, y: integer): TPencildata;
    Function getnumbercount: byte;
  public
    Constructor Create(n: Byte);
    Destructor destroy; override;
    Property Value[x, y: integer]: Byte read Getvalue write setvalue;
    Property Fixed[x, y: integer]: Boolean read GetFixed write setFixed;
    Property Owner[x, y: integer]: Byte read GetOwner write setOwner;
    Property Marked[x, y: integer]: Boolean read GetMArked write setMarked;
    Property Pencils[x, y, z: integer]: Boolean read GetPencils write setPencils;
    Property Pencildata[x, y: integer]: TPencildata read GetPencilsdata; // write setPencils;
    Property Numbercount: Byte read Getnumbercount;
  End;
Diese Klasse tut wunderbar und nur für neugierige hier noch der Constructor.

Delphi-Quellcode:
Constructor Tnxnfield.Create(n: Byte);
Begin
  Inherited create;
  Setlength(Field, n, n);
End;

Destructor Tnxnfield.destroy;
Begin
  Setlength(Field, 0, 0);
  Inherited destroy;
End;
Das Lustige ist nur das ein Array normalerweise mit

Delphi-Quellcode:
Type Bla = Array of array of Boolean;

..
Var bl:Bla;

Begin
..
bl[x,y]:=true;
..
end;
Angesprochen werden kann.

Bei meiner Klassen version geht das nicht.

Da geht das nur mit.
Delphi-Quellcode:
..
var Value:TNxNField;
begin
..
Value.Value[x, y] = 0;
// Viel schöner wäre doch
// Value[x, y].Value = 0;

..
end;
Weis jemand wie ich die Klasse Verändern mus das ich es so Programmieren kann wie ich das bisher gewöhnt bin.

Oder geht es gar nicht anders ?
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Array's in Klassen

  Alt 15. Mär 2006, 17:36
//Edit: War quatsch, hatte mich verlesen, gleich kommt der nächste Versuch

Naja, da besteht ja schon ein gewisser Unterschied. Im ersten Fall hast du einfach nur ein Array. Da kannst du natürlich einfach so draufzugreifen. Im zweiten Fall hast du ein Array, das eine Property eines Objektes ist.
Was du machen kannst ist, Value als Standard-Eigenschaft deiner Klasse zu machen (mit dem Schlüsselwort default sollte das gehen), dann kannst du per
Value[x,y] := ... direkt auf das Array zugreifen (so wie es auch bei den Items der Stringlist funktioniert).
Dein Aufruf
Value[x,y].Value := ... ist aber (sorry) kompletter Quatsch
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Array's in Klassen

  Alt 15. Mär 2006, 18:04
Hi.

Zitat von Corpsman:
Ich brauche die Möglichkeit ein Dynamisches Array als Parameter einer Function zu übergeben.

Das geht ja bekanntlich nicht.
Du meinst das bestimmt anders als du es geschrieben hast.

Delphi-Quellcode:
type
  TMatrix = array of array of Extended;

var
  matrix: TMatrix;

procedure MatrixInitRandom(var m: TMatrix);
var
  i, j: Integer;
begin
  for i := Low(m) to High(m) do
    for j := Low(m[i]) to High(m[i]) do
      m[i, j] := Random;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Array's in Klassen

  Alt 15. Mär 2006, 20:20
@leddl

thx die Default bringt mir net viel da ich ja eigentlich alle Bräuchte. Aber nu weis ich wenigstens das es wirklich net geht.

@marabu

MAn kann das so schon machen nur bringt es bei mir jede menge Fehler mit sich.

Bisher hat es nie funktioniert. Nutzt du auch d5 oder höher ?
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Array's in Klassen

  Alt 15. Mär 2006, 20:24
Mein Beispiel habe ich mit D5 laufen lassen.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Array's in Klassen

  Alt 15. Mär 2006, 20:27
Ich verwende Delphi 7 und benutze regelmäßig dynamische Arrays als Parameter und auch als Rückgabewerte, klappt ohne Probleme, solange man darauf achtet, dass man diese auch mit SetLength auf die richtige Größe bringt ;>
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Array's in Klassen

  Alt 15. Mär 2006, 20:29
@Corpsman: Ich denke, Du solltest die Fehler in deinem Code eliminieren. Es ist fast immer einfacher, die Delphi-Mittel zu verwenden. marabu (Hi ) hat Dir bereits gezeigt, das Du eventuell mit deiner Einschätzung, das ginge alles nicht, daneben liegst.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Array's in Klassen

  Alt 16. Mär 2006, 15:53
So denn habt ihr mich überzeugt das ich einem Irrglauben aufsas.

Allerdings habe ich mit der jetzigen Version das gefühl das ich deitlich schneller bin. Da ich hier ja nur mit Ppointern arbeite.

Die ich auch unbedingt brauche damit ich sie auch meinen Stack poshen und Popen kann .
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Antwort Antwort


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:31 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