Wie man richtig frei Datensätze, die enthalten verschiedene Typen in Delphi auf einmal?

type
  TSomeRecord = Record
    field1: integer;
    field2: string;
    field3: boolean;
  End;
var
  SomeRecord: TSomeRecord;
  SomeRecAr: array of TSomeRecord;

Dies ist das einfachste Beispiel, was ich habe und da ich wiederverwenden möchten SomeRecord (mit bestimmte Felder leer bleiben, ohne zu befreien, alles einige Felder übertragen werden, wenn ich bin wiederverwenden SomeRecorddie offensichtlich unerwünschten) ich bin auf der Suche nach einem Weg, Sie zu befreien, alle Felder auf einmal. Ich habe angefangen mit string[255] und verwendet ZeroMemory()das war in Ordnung, bis er anfing undicht zu Erinnerung, das war nur, weil ich umgestiegen auf string. Mir fehlt noch das wissen, warum, aber es scheint mit, dass es dynamisch ist. Ich bin mit dynamischen arrays, also gehe ich davon aus, dass der Versuch ZeroMemory() auf etwas Dynamik würde führen zu Undichtigkeiten. Einen Tag verschwendet, herauszufinden, dass heraus. Ich denke, dass ich dies Problem gelöst durch die Verwendung Finalize() auf SomeRecord oder SomeRecAr vor ZeroMemory()aber ich bin mir nicht sicher, ob das der richtige Ansatz oder einfach nur mich dumm.

Also die Frage ist: wie frei alles auf einmal? zu ein paar einzelnen Verfahren existieren für diese, ich bin mir nicht bewusst?

Auf einer anderen Anmerkung, alternativ wäre ich für Vorschläge offen, wie implementiert man diese Sätze anders zu beginnen mit, so brauche ich mich nicht zu komplizierte versuche zu befreien Zeug. Ich sah in die Erstellung von Datensätzen mit New() und dann, es loszuwerden Dispose()aber ich habe keine Ahnung, was es bedeutet, wenn eine variable nach einem Aufruf von Dispose() nicht definiert ist, wird statt der null. Außerdem, ich weiß nicht, was ist der Unterschied zwischen einer Variablen eines bestimmten Typs (SomeRecord: TSomeRecord) im Vergleich zu einer Variablen weist auf einen Typ (SomeRecord: ^TSomeRecord). Ich bin auf der Suche in den oben genannten Probleme im moment, es sei denn, jemand kann es erklären schnell, kann es einige Zeit dauern.

InformationsquelleAutor der Frage Raith | 2012-06-16

Schreibe einen Kommentar