AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi dynamisches array wenn array eigenes objekt
Thema durchsuchen
Ansicht
Themen-Optionen

dynamisches array wenn array eigenes objekt

Ein Thema von Mr. Pink · begonnen am 8. Feb 2008 · letzter Beitrag vom 9. Feb 2008
Antwort Antwort
Mr. Pink

Registriert seit: 30. Jan 2006
72 Beiträge
 
#1

dynamisches array wenn array eigenes objekt

  Alt 8. Feb 2008, 19:42
hallo,
ich habe nen 2-dim-array als eigenes objekt definiert, um es so leichter als parameter an funktionen zu übergeben.
Delphi-Quellcode:
type
     TMyArray = Array[1..6,1..6] of Integer;
würde jetzt aber gerne die größe (ist quadratisch) variabel halten, also als dynamisches array - am besten auch die dimension, wobei jede dimension gleich groß wäre.

weiss wer wie ich das am besten machen kann?
könnte mir vorstellen, dass das mit der dimension weit aus schwieriger ist, als mit der größe, die größe ist aber auch wichtiger, das muss doch auch iwie zu machen sein...

DANKE schonmal - zumindet fürs lesen
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#2

Re: dynamisches array wenn array eigenes objekt

  Alt 8. Feb 2008, 19:51
Suchst du die Funktion SetLength()? Ansonsten verstehe ich dein Problem nicht
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Mr. Pink

Registriert seit: 30. Jan 2006
72 Beiträge
 
#3

Re: dynamisches array wenn array eigenes objekt

  Alt 8. Feb 2008, 20:05
ich glaube nicht, jedenfalls funzt das mit der nicht so wies soll, hab folgendes ausprobiert, was mir aber nciht wirklich weiterhalf:
Delphi-Quellcode:
type
     TMyArray = Array of Array of Integer;
     TMyHauptKlasse=class
     private
       procedure bla;
     end;

implementation

var Feld: TMyArray;

procedure TMyHauptklasse.bla;
begin
  SetLength(Feld,6,6);
end;
da bekomme ich ne fehlermeldung wegen zugriffsverletzung...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: dynamisches array wenn array eigenes objekt

  Alt 8. Feb 2008, 20:08
Existiert den eine Instanz von TMyHauptKlasse?
Markus Kinzler
  Mit Zitat antworten Zitat
Mr. Pink

Registriert seit: 30. Jan 2006
72 Beiträge
 
#5

Re: dynamisches array wenn array eigenes objekt

  Alt 8. Feb 2008, 20:16
ok, mein fehler, hab mit falschen werten getestet -.- sorry.

aber das problem mit dem variabel halten der dimension bleibt... hat da wer ne idee?

danke schonmal fürs weiterhelfen
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: dynamisches array wenn array eigenes objekt

  Alt 8. Feb 2008, 23:09
Das Problem ist doch gelöst. Dimensionsfreie Deklaration, und in der Implementierung mit SetLength() die Größe setzen. Das ist der einfachste Weg überhaupt, und im Kern auch der einzige (man kanns nur komplizierter hinschreiben, wer will das schon). Wovon du dich halt verabschieden musst, sind beliebige untere Grenzen. 0 ist immer dein erster Index, was nun aber nicht wirklich ein Problem sein sollte denke ich.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#7

Re: dynamisches array wenn array eigenes objekt

  Alt 9. Feb 2008, 14:05
Delphi-Quellcode:
procedure TMyHauptklasse.bla;
begin
  SetLength(Feld,6,6);
end;
müsste eher

Delphi-Quellcode:
procedure TMyHauptklasse.bla;
var
  i: Integer;
begin
  SetLength(Feld, 6);
  for i := 0 to High(Feld) do
    SetLength(Feld[i], 6);
end;
sein.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#8

Re: dynamisches array wenn array eigenes objekt

  Alt 9. Feb 2008, 17:03
Zitat von Mr. Pink:
aber das problem mit dem variabel halten der dimension bleibt... hat da wer ne idee?
Warum Arrays, wenn man auch Klassen nehmen kann? Wir haben doch die OOP...

Delphi-Quellcode:
// Pseudocode:
type
  TVarDimListDimension = class(TObjectList)
    ...
  end;

  TVariableDimList = class(TPersistent)
  private
    FDimensions: Integer = 1;
    FSize: Integer; // Länge je Dimension
    FFirstDimesion: TVarDimListDimension; // hält ggf. weitere TDimension Objekte. Die letzte Ebene hält die eigentlichen Daten
  public
    property Demensions read FDimensions write SetDimensions;
    property Size read FSize write SetSize;
    Items[Index: array of Integer] read getItem write SetItem; default; // Length(Index) = FDimensions; leider muss das zur Laufzeit geprüft wedren, aber anders gehts nicht; auch der Rage-Test muss hier gemacht wedren...
  end;
mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

Re: dynamisches array wenn array eigenes objekt

  Alt 9. Feb 2008, 17:07
Zitat von wicht:
Delphi-Quellcode:
procedure TMyHauptklasse.bla;
begin
  SetLength(Feld,6,6);
end;
müsste eher

Delphi-Quellcode:
procedure TMyHauptklasse.bla;
var
  i: Integer;
begin
  SetLength(Feld, 6);
  for i := 0 to High(Feld) do
    SetLength(Feld[i], 6);
end;
sein.
Schlicht und ergreifend falsch.
  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 18: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