![]() |
Zugriff auf zweidimensionales Array
Hi,
Ich hab ein kleines Array (Daten = array[0..2] of word), von dem ich mehrere in einem größeren Array verwalte (MessReihe = array of Daten). Jetzt will ich zu Testzwecken ein Messreihen array füllen. Das per
Delphi-Quellcode:
ist ja nicht gerade schön zu schreiben oder lesen.
AReihe[0,0]:=12;
AReihe[0,1]:=89; AReihe[0,2]:=4; AReihe[1,0]:=63; //... Deswegen wollte ich fragen, ob es nicht eine Alternative Syntax gibt, also so was a la
Delphi-Quellcode:
.
AReihe[0]:= [12;89;4]
Ich hab so was zwar noch nie gesehen, aber vielleicht kann man sich dadurch etwas Arbeit sparen... Danke schonmal |
Re: Zugriff auf zweidimensionales Array
Sowas geht leider nicht ... ich wollte auch mal sowas ... und ich glaub Sakura hatte mir damals auch ein NEIN entgegengeschmettert (irgendwo hier im Forum).
Das kannst du nur für vordefinierte Variablen, oder Constanten verwenden. Mitten in 'ner Prozedure wird's halt nicht -.-'' Aber es ist dennoch möglich auf diese Weise eine Konstante zu erstellen und diese dann der Variable zuzuweisen. |
Re: Zugriff auf zweidimensionales Array
Soweit ich weiß nur, indem du Konstanten dafür definierst.
Delphi-Quellcode:
procedure Foo;
type TBar = array [0..1] of Byte; const Alc: TBar = (4, 2); var Bar: array [0..0] of TBar; begin Bar[0] := Alc; end; |
Re: Zugriff auf zweidimensionales Array
hm schade. Wie (falls es geht) könnte ich denn so eine mehrdimensionale Konstante deklarieren? Über die Hilfe bin ich jetzt an Typisierte und Array -Konstanten gekommen, nur hab ich da das Problem, dass ich Messreihe als dynamisches Array deklarieren muss und in der Hilfe werden nur statische erwähnt.
Hat schon Mal jemand so was erfolgreich gelöst? // Ich habs jetzt wie Nico gelöst. Vielen Dank für den Tip. // Was ist eigentlich mit den Roten Kasten los? |
Re: Zugriff auf zweidimensionales Array
hmm es gibt doch Mengen?!
set of ... das ist doch was er da Sucht mit: Zitat:
|
Re: Zugriff auf zweidimensionales Array
Äußerlich mag es zwar "gleich" aussehen,
aber Arrays und Sets sind dennoch zwei verschiedene Dinge :warn: |
Re: Zugriff auf zweidimensionales Array
Mehrdimensionale Konstanten deklariert man so:
Delphi-Quellcode:
const bla: array [0..1] of array[0..1] of word = ((5, 8), (15, 485));
|
Re: Zugriff auf zweidimensionales Array
Wenn man das wirklich öfter braucht und keine Konstanten benutzen kann, könnte man ja ein "Funktions-Template" schreiben. Parameter als offenes Array, für dynamische Arrays müsste man nicht einmal den Rückgabewert gesondert deklarieren.
|
Re: Zugriff auf zweidimensionales Array
Zitat:
Ach mist ich hab net genau gelesen was er da genau wollte. Ich dachte er braucht einfach was wo er mehre Sachen drinn abspeichern kann. Wusste net das die Reihenfolge wichtig ist! |
Re: Zugriff auf zweidimensionales Array
Hallo Toxman,
wie füllst du denn das Array mit Daten??? Vieleicht gibt es da ja eine möglichkeit. Gibtst du dieser per hand ein??? oder liest du die aus einer textfile aus??? oder DB(Datenbank) MFG Christian18 |
Re: Zugriff auf zweidimensionales Array
@ Christian18:
Ich erstelle sie per Hand und gebe sie auch manuell ein. Es ging mir insgesamt um eine Eingabemöglichkeit, bei der ich wenig schreiben muss und schnell einzelne Werte ändern kann. Mit den Konstanten hats gut funktioniert. |
Re: Zugriff auf zweidimensionales Array
Zitat:
ich habe einen möglichkeit gefunden wie du das machen kannst. warte mal ich programmiere es nur noch schnell zuende, dann poste ich es hier mal |
Re: Zugriff auf zweidimensionales Array
Hallo,
ich bin es nochmal. Ich habe die mal was fertig gemacht, damit du deine Messdaten so eingeben kannst wie du es oben in Deinem Beitrag geschrieben hast. Hier der Code. Ich habe ihn auch noch ein bisschen dokumentiert, damit du durchsiehst.
Delphi-Quellcode:
zum aufrufen einfach:
procedure in_array_speichern(s : String);
var i : Integer; // Schleifenvariable a : Integer; // Array Zugriffsvariable m : Array of String; // wären dann deine Messdaten k : Integer; // Anzahl der ; begin // Anzahl der ; ermitteln k:=0; for i:=1 to Length(s) do begin if s[i]=';' then Inc(k); end; SetLength(m, k+1); // String von ; trennen und im Array speichern a:=0; for i:=1 to Length(s) do begin if s[i]=';' then begin Inc(a); end else begin m[a]:=m[a] + s[i]; end; end; // Messdaten einzeln ausgeben for i:=0 to a do begin ShowMessage(m[i]); end; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin in_array_speichern('12;234;34;345;34'); end; [NACHTRAG] So gehts vieleicht noch ein bisschen schneller als mit den Konstanten. [/NACHTRAG] Mit freundlichen Grüßen Christian18 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz