AGB  ·  Datenschutz  ·  Impressum  







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

Dynamic Array Einfache Zuweisung

Ein Thema von amoibos · begonnen am 7. Okt 2015 · letzter Beitrag vom 7. Okt 2015
Antwort Antwort
Seite 1 von 2  1 2      
amoibos

Registriert seit: 1. Sep 2015
33 Beiträge
 
Delphi 5 Professional
 
#1

Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 05:43
Delphi-Version: 5
Hallo,
ich bin auf der Suche nach einem Konstrukt mit dem man Zuweisungen weniger umständlich gestalten kann. Dabei hab ich folgenden Hinweis gesehen, nur funktioniert der nicht mit meiner Version. Kurzum das soll der Compiler akzeptieren:

Code:
type
  TIntArray = array of integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  MyArr: TIntArray;
begin
  MyArr := TIntArray.Create(10, 20, 30, 40);
end;
Stattdessen gibts:
Zitat:
Object or class type required.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 06:14
Du deklarierst einen Vektor ('Array of integer') und willst daraus dann eine Matrix (Array of Array of integer) basteln. Das kann doch gar nicht funktionieren:
Delphi-Quellcode:
Var
  Vektor : Array of integer;
  Matrix : Array Of Integer;
  i : Integer;

begin
  SetLength(Vektor,20); // Der Vektor hat nun 20 Elemente. Vektor[0]..Vektor[19];
  SetLength (Matrix,30); // Die Matrix hat nun 30 Zeilen
  for i:=0 to Length(Matrix) do
    SetLength(Matrix[i],40); // Jede Zeile hat 40 Spalten
Wenn Du das einfacher/anders haben willst, dann bau Dir deine Methoden nach deiner Facon.

Ich würde das sowieso nicht so machen, sondern eine Matrix hinter einem Interface/Klasse kapseln.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 06:45
@amoibos: Du benutzt Delphi5? Die Version kann das nicht. Mit meinem XE8 funktioniert es.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 06:48
Du deklarierst einen Vektor ('Array of integer') und willst daraus dann eine Matrix (Array of Array of integer) basteln.
Wo steht, daß er ein "Array of Array of integer" deklarieren will. Er will eigentlich nur eine einfache Art der Initialisierung einen eindimensionalen Arrays erreichen. Oder ich habe etwas falsch verstanden?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 06:57
Record Helper, welche in dem Beispiel verwendet werden gab es aber bei D5 noch nicht. Class Helpers gab es ab D2010, record helpers kamen noch später.
Markus Kinzler
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
110 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 07:02
Komischer Thread.
In der Frage wird nirgends ein Array of Array erwähnt, und Record Helper kommen auch nirgends vor.
Von daher verwundern einige Antworten.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#7

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 07:05
Soweit ich weiß, gibt es diesen Array-Constructor seit D2007. Für alles darunter ist wohl Handarbeit angesagt - oder halt ein Update...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 07:09
Code:
var
  MyArr: TIntArray;
begin
  MyArr := TIntArray.Create(10, 20, 30, 40);
end;
Für mich sieht das nach einem Versuch aus, ein zweidimensionales Array zu erzeugen. Anders sind die 4 Zahlen für mich nicht erklärbar. 2D-Array => Matrix. Wenn ich falsch lag, bitte bessere Interpretation.... Ach... Ein Vektor mit vier Werten...?

Isolde! Du hast wieder den koffeinfreien Kaffee erwischt!
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#9

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 07:12
Mit einer kleinen Hilfsfunktion geht das schon etwas einfacher:

Delphi-Quellcode:
type
  TIntArray = array of integer;

function GetIntArray(AIntArr : array of integer):TIntArray;
begin
  setlength(result,length(AIntArr));
  move(AIntArr[0],result[0],length(AIntArr)* SizeOf(integer));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  MyArr: TIntArray;
begin
  MyArr := GetIntArray([10, 20, 30, 40]);
  // ...
end;
Sollte auch unter Delphi 5 laufen, habe es aber nur mit Delphi 6 getestet.

Alternative:

Delphi-Quellcode:
procedure FillIntArray(AIntArr : array of integer;var AMyArr : TIntArray);
begin
  setlength(AMyArr,length(AIntArr));
  move(AIntArr[0],AMyArr[0],length(AIntArr)* SizeOf(integer));
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  MyArr: TIntArray;
begin
  FillIntArray([10, 20, 30, 40], MyArr);

Geändert von HolgerX ( 7. Okt 2015 um 07:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Dynamic Array Einfache Zuweisung

  Alt 7. Okt 2015, 07:40
Isolde! Du hast wieder den koffeinfreien Kaffee erwischt!
Kenne ich! Immer wieder beruhigend, daß es anderen auch so geht.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  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 04:57 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