Args. Ich hab den Fehler. Es hatte überhaupt nichts mit dem Array an sich zu tun.
Ich benutze folgende Schleife um das Array zu füllen:
Delphi-Quellcode:
while not mQuery.Eof do
begin
mData := TDiagonalLimitVorgang.Create;
try
mData.internalInvoiceId := mQuery.FieldAsString('referenzid');
mData.amount := mQuery.FieldAsFloat('fakturabetrag');
mData.openAmount := mQuery.FieldAsFloat('fakturabetragrest');
mData.paymentTagetDate := TASDateUtils.ConvertDateToInternational(mQuery.FieldAsString('zahlungszieldatum'));
mData.dateOfEntry := TASDateUtils.ConvertDateToInternational(mQuery.FieldAsString('fakturadatum'));
if(mData.amount <> mData.openAmount) then
begin
mData.paymentDate := TASDateUtils.ConvertDateToInternational(DateToStr(Self.GetPaymentDateByInvoice(mQuery.FieldAsString('mandantid'), mQuery.FieldAsString('vorgangid'), mQuery.FieldAsString('fakturaid'), mQuery.FieldAsString('versionid'))));
end;
SetLength(Result, Length(Result) + 1);
Result[Length(Result) - 1] := mData;
finally
FreeAndNil(mData);
end;
mQuery.Next;
end;
Was passiert wohl mit dem Objekt im Array wenn ich im finally ankomme? Nachdem ich das FreeAndNil entfernt habe, funktionierte es einwandfrei.