AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Mehrdimensionales Array variable auslegen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrdimensionales Array variable auslegen

Ein Thema von EWeiss · begonnen am 24. Apr 2009 · letzter Beitrag vom 24. Apr 2009
Antwort Antwort
Seite 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:47
Wie kann ich das Array variabel auslegen?
ia: array [0..767, 0..100] of byte; Das ich die werte also zur laufzeit ändern kann.

gruss Emil
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:49
Als dynamischen Array:

ia: Array of Array of Byte; oder
Delphi-Quellcode:
Type
    ByteArray = Array of Byte;
...
   ia: array of ByteArray;
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:51
Zitat von mkinzler:
Als dynamischen Array:

ia: Array of Array of Byte; oder
Delphi-Quellcode:
Type
    ByteArray = Array of Byte;
...
   ia: array of ByteArray;
Wie wird dann die neue länge als beispiel bei 100 zugewiesen ?

sorry wenn die frage was dumm daher kommt.

Danke schön ..

gruss Emil
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:53
SetLength( ia, 100);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.131 Beiträge
 
Delphi 12 Athens
 
#5

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:55
Delphi-Quellcode:
ia = Array of Array of Byte;
// oder einfach nur
ia = Array of {Types.}TByteDynArray;
Delphi-Quellcode:
// ia: Array[0..767, 0..100] of Byte;

SetLength(ia, 768);
For i := 0 to High(ia) do
  SetLength(ia[i], 101);

// oder

SetLength(ia, 768, 101);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:56
Zitat von mkinzler:
SetLength( ia, 100);
Ja bei eindimensional oder ?
Das ist was ich nicht verstehe... in dem zusammenhang

Delphi-Quellcode:
var
  ia : array of byte
länge zuweisen..
Setlength(ia, 100); Habe hier aber 2 einträge ..
ia: array [0..767, 0..100] of byte; Muss ja in dem fall wissen welcher seite ich den neuen wert zuweise.

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 12:59
Zitat von himitsu:
Delphi-Quellcode:
ia = Array of Array of Byte;
// oder einfach nur
ia = Array of {Types.}TByteDynArray;
Delphi-Quellcode:
// ia: Array[0..767, 0..100] of Byte;

SetLength(ia, 768);
For i := 0 to High(ia) do
  SetLength(ia[i], 101);

// oder

SetLength(ia, 768, 101);
Ahh High wäre dann der zweite eintrag
Danke schön.

EDIT:
warum dann einen wert mehr ?
aus 767 wird 768 ?

gruss Emil
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 13:01
Nein Heigh ermittelt die obere Grenze des 1. Wertes
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.131 Beiträge
 
Delphi 12 Athens
 
#9

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 13:02
[info] hab oben was editiert

vielleicht fällst es so besser auf, wenn man das trennt ... ergibt Beides das Selbe
Delphi-Quellcode:
ia: Array[0..767, 0..100] of Byte;

ia: Array[0..767] of Array[0..100] of Byte;
und nu erkennt man auch, warum man es wie mit SetLength bearbeiten kann.

PS: hier kann man natürlich auch jedem Unterarray eine eigene Länge verpassen
(nicht alle Arrays der selben Ebene müssen gleich groß sein)

[add]
Zitat von EWeiss:
EDIT:
warum dann einen wert mehr ?
aus 767 wird 768 ?
weil 0 bis 767 nunmal 768 Felder sind?


[add2]
hier nochmal das Ganze mit 3 Ebenen ... dürfte do dann hoffentlich klarer werden lassen
Delphi-Quellcode:
ia: Array[0..99, 0..199, 0..299] of Byte;

ia: Array[0..99] of Array[0..199] of Array[0..299] of Byte;

ia: Array of Array of Array of Byte;

SetLength(ia, 100, 200, 300);

SetLength(ia, 100);
For i1 := 0 to High(ia) do Begin { 0 to Length(ia) - 1 }
  SetLength(ia[i1], 200);
  For i2 := 0 to High(ia[i1]) do { 0 to Length(ia[i1]) - 1 }
    SetLength(ia[i1, i2], 300); // SetLength(ia[i1][i2], 300);
End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: Mehrdimensionales Array variable auslegen

  Alt 24. Apr 2009, 13:15
Hab es jetzt so gemacht..
Delphi-Quellcode:
var
ia : Array of Array of byte;
Delphi-Quellcode:
nHeight:= PicBB.Height;
nImageSize:= (256*nHeight)*3;
SetLength(ia, 768, nHeight + 1);
jetzt springt er in System.pas rein und meldet
function LoadResString(ResStringRec: PResStringRec): string; Zugriffsverletzng .. schreiben von Adresse.

Übergebe ich das Array normal
ia: array [0..767, 0..100] of byte; dann funktioniert es.

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:26 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