Hallo,
Ich hätte da mal eine Frage. Folgende Typen:
Delphi-Quellcode:
TRecord = record
// .. Daten
RecordArray: Array of TRecord;
end;
TRecordArray = Array of TRecord;
Ich kann das TRecordArray im TRecord selbst nicht benutzen (von Pointern mal abgesehen), also benutze ich da ein einfaches Array of TRecord, was funktioniert. Ob das so schön ist.. wahrscheinlich gibts schöneres aber ich kenne keine bessere Lösung ohne Pointer/New/Dispose.
Aber weiter:
Des weiteren habe ich eine procedure die ungefähr so aussieht:
Delphi-Quellcode:
// Muss vom Typ TRecordArray sein, da SetLength mit "Array of TRecord" nicht funktioniert
procedure Irgendwas(var ARecords: TRecordArray)
begin
SetLength(ARecords, 123); //
// Array wird gefüllt
end;
// Aufruf
var Rec: TRecord;
begin
// A: Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Irgendwas(Rec.RecordArray);
// B: funktioniert
Irgendwas(TRecordArray(Rec.RecordArray));
end;
Frage1: Gibt es ernsthafte Einsprüche zu dem Cast, weil die interne Struktur von "TRecordArray" und "Array of TRecord" möglicherweise unterschiedlich sind und es da zu unvorhergesehenen Fehlern kommen kann?
Frage2: Vorschläge zu einer bessere Lösung?
(Ich weiß der Titel ist sehr seltsam, aber konnte es nicht besser formulieren. Wenn jemand das Problem besser beschreiben kann - nur her damit
)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."