Delphi-Quellcode:
type TDocxline = record
level : integer;
article_id : integer;
article_number : string;
article_name : string;
end;
type
TDocxDocument = TList<TDocxline>;
Delphi-Quellcode:
procedure Tdata.getCatalog(inList : TStringList; Result : TDocxDocument );
var
i : integer;
//reval : TDocxDocument;
tmp : TDocxline;
begin
{...}
for i := 0 to inlist.Count - 1 do
begin
workQuery.ParamByName('id').AsInteger := StrToInt(inList[i]);
workQuery.Open;
if not workQuery.IsEmpty then
begin
tmp.level := workQuery.FieldByName('level').AsInteger;
tmp.article_id := workQuery.FieldByName('article_id').AsInteger;
tmp.article_name := workQuery.FieldByName('number').AsString;
tmp.article_number := workQuery.FieldByName('name').AsString;
//reval.AddRange(tmp);
Result.Add( tmp );
end;
workQuery.Close;
end;
//result := reval;
end;
{...}
{ Aufruf erfolgt dann so }
MyDocx := TDocxDocument.Create;
try
MyData.getCatalog( MyInList, MyDocx );
// Jetzt irgendwelche wilde Sachen mit MyDocx machen
finally
MyDocx.Free;
end;
TDocxline müßte kein Record sondern eine Klasse sein und auch entsprechend erzeugt und per Add eingefügr werden.
Im Moment versuchst Du den immer gleichen Zeiger auf dem Stack tmp : in eine nicht vorhandene Liste einzufügen.
Das sehe ich nicht so ... denn ein Record verhält sich genauso wie eine normale Variable.
Delphi-Quellcode:
a := 1; // a = 1
b := a; // b = 1
a := a + 1; // a = 2
c := a; // c = 2 und b = 1
Delphi-Quellcode:
type
MyRec = record
Value : integer;
end;
a.Value := 1;
b := a; // b.Value = 1
a.Value := a.Value + 1;
c := a; // c.Value = 2 und b.Value = 1
Somit kann hier durchaus ein Record als Listenelement verwendet werden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)