Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Cast eines Arrays auf einen Arraytyp bedenklich?

  Alt 15. Sep 2014, 20:55
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."

Geändert von Neutral General (15. Sep 2014 um 21:02 Uhr)
  Mit Zitat antworten Zitat