Hallo!
Nach längerer Zeit komme ich wieder dazu mich mit dem Problem zu beschäftigen. Ich habe leider noch keine Lösung dafür finden können. Es geht ganz einfach darum, aus zwei "array of TVarRec" einen Array zu machen um diesen an die Format() Funktion übergeben zu können.
Folgende Sachen habe ich probiert die leider nicht funktionieren:
Delphi-Quellcode:
// Funktioniert nicht: Bezeichner erwartet, aber 'ARRAY' gefunden
function concatArgs(a, b: array of TVarRec): array of TVarRec;
...
// Umgehe dieses Problem durch die def. eines eigenen Typs:
type
TVarRecArray=array of TVarRec;
...
function concatArgs(a, b: array of TVarRec): TVarRecArray;
var i: integer;
begin
setLength(a, length(a)+length(b)); // Inkompatible Typen
setLength(result, length(a)+length(b));
for i:=0 to length(a)-1 do
result[i] := a[i];
for i:=0 to length(b)-1 do
result[length(a)+i] := b[i];
end;
procedure test;
var str: string;
args1, args2: array of TVarRec;
argsA, argsB: TVarRecArray;
begin
str := '%s ist ein Test von %s und %u';
args1 := ['1', '2']; // Inkompatible Typen: 'dynamic array' und 'Set'
args1 := [99]; // Inkompatible Typen: 'dynamic array' und 'Set'
args1 := ['1', '2', 99]; // Inkompatible Typen: 'Char' und 'Integer'
argsA := ['1', '2']; // Inkompatible Typen: 'TVarRecArray' und 'Set'
argsA := [99]; // Inkompatible Typen: 'TVarRecArray' und 'Set'
argsA := ['1', '2', 99]; // Inkompatible Typen: 'Char' und 'Integer'
argsA := concatArgs(['1', '2'], [99]);
Format(str, argsA);
showMessage(str); // --> %s ist ein Test von %s und %u --> Keine Formatierung
end;
Jetzt sind mir die Ideen ausgegangen. Hat also noch jemand einen Tipp, wie ich dieses "array of TVarRec" verlängern kann?
Wieso kann ich ['1', '2'] problemlos als Argument von concatArgs angeben aber args1 nicht direkt zuweisen?
Besten Dank
Ares