Autor Beitrag
VizeTE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Sa 08.02.03 09:07 
Hallo alle zusammen.

Also ich habe folgendes Problem:

Ich habe mir einen Record definiert der etwa so aussieht:

ausblenden Quelltext
1:
2:
3:
4:
TMyRecord = record
  Item1 : typ1;
  Item2 : typ2;
end;


Und dazu passend einen dynamischen Array

ausblenden Quelltext
1:
TMyRecordList = array of TMyRecord;					


Mit Hilfe dieses Types habe ich dann eine Variable im proteted Bereich eines Objektes deklariert.
Das sieht dann etwa so aus:

ausblenden Quelltext
1:
2:
3:
4:
TMyObject = class
protected
  FMyRecordList : TMyRecordList;
end;


So dann habe ich dieses Objekt abgeleitet...

ausblenden Quelltext
1:
2:
3:
4:
5:
TMyObject2 = class(TMyObjekt)
  .  
  .
  .
end;


Und hier ensteht dann mein "Problem". Ich möchte dem Array nun einfach was zuweisen. Aber nicht so das ich da jeden Index durcharbeite sondern eher in dem Stil, dass das ungefähr wie folgt aussieht:

ausblenden Quelltext
1:
2:
3:
4:
FMyRecordList := TMyRecordList(
  (Item1: [Wert], Item2: [Wert]),
  (Item2: [Wert], Item2: [Wert])
);


Wobei vielleicht noch zu sagen ist, dass in meinem Record auch wiederrum selbstdefinierte
Typen vorhanden sind. Das schrenkt ja dann die Verwendung von Varianten ein, glaube ich.
Das Problem besteht wahrscheinlich lediglich darin, dass ich die exakte Syntax einfach nicht kenne.

Wäre schön wenn mir da jemand auf die Sprünge helfen könnte ;o)


Ciao und vielen Dank,

VizeTE
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 08.02.03 19:39 
Also, soweit ich weiß, kannst du nur liokale Variablen initialisieren (also nicht im code selber). Das sieht dan etwa so aus:
ausblenden Quelltext
1:
2:
var
  Point := TPoint(X: 1; Y: 2);


Mit deinem Array wird das wahrscheinlich eh' nicht gehen, da man ja zuerst den Speicher reservieren muss (SetLength()). Und dann kannst du die Variable ja nicht mehr initialisieren.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Sa 08.02.03 20:00 
In deinem Fall, würde ich ein paar Funktionen schreiben, die das ermöglichen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function BuildMyRecordList(const Args: TMyRecordList): TMyRecordList;
begin
  Result := Copy(Args);
end;

function MyRecord(const Item1: Integer; const Item2: string): TMyRecord
begin
  Result.Item1 := Item1;
  Result.Item2 := Item2;
end;


// erzeugen:
FMyRecordList := BuildMyRecordList( [
  MyRecord(10, 'Hallo'),
  MyRecord(20, 'wie'),
  MyRecord(30, 'geht'),
  MyRecord(40, 'es'),
  MyRecord(50, 'dir')
]);

_________________
Ist Zeit wirklich Geld?