Zitat von
jbg:
Das einzige was dir der Compiler für die Variablen geben kann ist deren Adresse im Arbeitsspeicher.
Das ist mir bekannt. Obwohl man mithilfe der
RTTI in der Lage wäre, zumindest die published Eigenschaften oder die Rückgabewerte von Methoden namentlich zu referenzieren, ist das in der Tat nicht praxistauglich. Aus diesem Grund muss diese Information vom Entwickler (zB beim Aufruf) hinzugefügt werden.
Zitat von
sakura:
Ich muss mal so doof fragen, aber was ist an Format nicht gut?
Format ist leider "nur" in der Lage, die in einem Array übergebenen Variablen mithilfe deren jeweiliger Position zu referenzieren, also etwa in der Art
myString:= Format('A String: %2:s', [6, 9, '42']);
Wie ich benötige ist aber etwas in der Art
Delphi-Quellcode:
myString:= AFunc('A String: %AString:s',
[Value('Num1', 6), Value('Num2', 9), Value('AString', 42)]);
Aus dem Aufruf kann man schon entnehmen, dass ich mir ungefähr soetwas vorstelle:
Delphi-Quellcode:
type
TMyValueTupel = record
Ident: string;
Value: Variant;
end;
function AFunc(const AMessage: string;
const AValues: array of TMyValueType): string;
Tatsächlich würde ich
Value und
AFunc wahrscheinlich als Klassenmethoden einer Klasse implementieren, die in der Lage ist, benannte Werte-Mengen (assoziatives Array) und neben einfachen Tupeln auch Arrays aus Werten zu speichernn, so dass eine erweiterte Format-Syntax der Art
Code:
'An array entry: $AnArray[2]:s'
oder gar
Code:
'An array entry: $AnArray[$Num1]:s'
denkbar ist.
Im Wesentlichen entspricht dies etwas der Collection
TParams aus der
Unit DB mit den zugehörigen Items
TParam, allerdings ist mir das zu
SQL-spezifisch, bietet nicht ausreichend Funktionalität (zB Default-Values) und ist zu kompliziert in der Handhabe...
Trotzdem möchte ich die Mühe ungern investieren, falls es eine entsprechende Lösung bereits gibt