Hallo,
ich erstelle so ein dynamisches Array of Record:
Delphi-Quellcode:
function Tdata.getCatalog(inList : TStringList) : TDocxDocument;
var
i : integer;
reval : TDocxDocument;
begin
if workQuery.Active then WorkQuery.Active := false;
workQuery.SQL.Clear;
workQuery.SQL.Add('SELECT ass.level, ass.article_id, art.name, art.number FROM ');
workQuery.SQL.Add('assignments as ass JOIN articles as art ON ass.article_id=art.id WHERE ');
workQuery.SQL.Add('ass.id=:id');
for i := 0 to inlist.Count - 1 do
begin
workQuery.ParamByName('id').AsInteger := StrToInt(inList[i]);
workQuery.Open;
if not workQuery.IsEmpty then
begin
reval[i].level := workQuery.FieldByName('level').AsInteger;
reval[i].article_id := workQuery.FieldByName('article_id').AsInteger;
reval[i].article_name := workQuery.FieldByName('name').AsString;
reval[i].article_number := workQuery.FieldByName('number').AsString;
end;
workQuery.Close;
end;
SetLength(reval,i);
result := reval;
end;
Die Typen sind wie folgt deklariert:
Delphi-Quellcode:
type TDocxline = record
level : integer;
article_id : integer;
article_number : string;
article_name : string;
end;
type
TDocxDocument = array of TDocxline;
Allerdings habe ich Probleme das zurückgegebene Array zu durchlaufen. Habe ich setLength richtig gesetzt?
Viele Grüße ...