Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Record in Array (https://www.delphipraxis.net/179065-record-array.html)

hirsch 12. Feb 2014 14:58

Record in Array
 
Delphi-Quellcode:
type
  TKalender = class(TForm);
  TFrei = record
    Date: TDateTime;
    Name: string;
  end;
  TFreiTable = array of TFrei;
  function holeFreiTable(Year: Word): TFreiTable;
var
   Tage : array of array of String;
   erster, letzter : Integer;
.
.
.
function holeFreiTable(Year: Word): TFreiTable;
var
  EDate, Test: TDateTime;
  von,
  bis,
  I   : Integer;
begin
.
.
Test:=(TFreiTable(TFrei.Date))[1]; //<--E2096 Methodenbezeichner erwartet

//Später soll es dann mal anstelle der Test-Variablen so aussehen:
{  for I := erster to letzter do begin
    Tage[i,0]:=DateToStr(TFreiTable(TFrei(Date))[i]);
    Tage[i,1]:=TFreiTable[i].Name;
  end;}
Ich versuche aus dem Record alle Elemente auszulesen und in das Array Tage zu schreiben, da ich es benutzen möchte eine Tabelle mit Feiertagen zu bauen.

Nun ist meine Anfängerfrage: wie spreche ich jedes Feld des Record an, entlocke ihm sein Geheimnis und übergebe es als string meinem Array.

Ich hoffe jemand kann mir weiter helfen.
Vielen Dank

DeddyH 12. Feb 2014 15:03

AW: Record in Array
 
Zitat:

Delphi-Quellcode:
TFrei = record
    Date: TDateTime;
    Name: string;
  end;

  TFreiTable = array of TFrei;

  function holeFreiTable(Year: Word): TFreiTable;

Soweit noch verstanden. Aber was willst Du mit dem 2-dimensionalen dynamischen Array Tage machen?

hirsch 12. Feb 2014 15:06

AW: Record in Array
 
Naja, ich dachte mir, mit dem 2Dimensionalen dynamischen Array, kann ich mir das später leichter lesen,denn mit Records weis ich nicht wie ich an den anfang springe, ans ende, ich weis noch nicht einmal wieviel zeilen es da gibt.
Kurzum ich kann mit Arrays besser umgehen.
Blöd gell

Dalai 12. Feb 2014 15:09

AW: Record in Array
 
Records haben keinen Anfang und kein Ende. Ein Record ist einfach nur ein Datensatz (wenn man so will), der aus mehreren Datentypen bestehen kann (aber nicht muss).

MfG Dalai

gammatester 12. Feb 2014 15:10

AW: Record in Array
 
Du brauchst erstmal ne Variable VFT oder so vom Typ TFreiTable:
Delphi-Quellcode:
var VFT: TFreiTable;
Dann geht's so
Delphi-Quellcode:
VFT[1].Date := ..
oder
Delphi-Quellcode:
VFT[2].Name := 'Je nun';

DeddyH 12. Feb 2014 15:16

AW: Record in Array
 
Records sind doch keine dynamischen Datenstrukturen und haben somit keinen Anfang und kein Ende. Die enthaltenen Felder sind Dir doch bekannt, wieso so umständlich?
Delphi-Quellcode:
Liste := holeFreiTable(2014);
for i := Low(Liste) to High(Liste) do
  ShowMessage(Liste[i].Name + ', ' + DateTimeToStr(Liste[i].Date));
[edit] *Pfh* das hat man davon, wenn während des Antwort Tippens der Chef reinkommt, da hätte ich mir das Abschicken sparen können. [/edit]

hirsch 12. Feb 2014 15:43

AW: Record in Array
 
Wow

Super.

Danke DeddyH, gammatester,Dalai


erster Fehler: Keine Variable vom Typ TFreiTable erzeugt.
zweiter Fehler, ich kann nicht mit records umgehen. Da hat DeddyH geholfen.
Habe nun die Inhalte in einem TStringrid, als String.

Vielen Dank


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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