Ik probeer weer eens wat uit de .NET wereld in Delphi (7) na te bootsen, niet omdat het zoooo handig is, maar puur voor de fun en om te kijken of het überhaupt kan. Ik wilde een set methoden maken in een TLogFile class die er zo uit zien:
Het probleem:
De eerste twee zijn uiteraard prima gelukt, maar de andere twee krijg ik niet aan de praat. Die Arg1 en Arg2 kan ik niet aan een array of const meegeven, omdat de compiler dan onmiddelijk zegt Bad argument type in variable type array constructor. Prima, kan ik inkomen, want array of const is iets varianterigs. Maar helaas, Arg1 en Arg2 declareren als Variant geeft bij de call naar Format een EConvertError, waarschijnlijk omdat bij die call VarType() van Arg1 en Arg2 dan varUnknown is...
De vraag:
Kan dit eigenlijk wel, en hoe dan?
Delphi:
In ieder van die methodes (behalve de eerste) wilde ik een call naar de Format functie doen om de string S geformatteerd naar de logfile te schrijven. Let op de laatste twee methoden: die parameters hebben geen type en dat is an sich niet fout (ff voor de mensen die het euvel gevonden denken te hebben).1
2
3
4
| function Writeln(const S: string): string; overload; function Writeln(const S: string; Args: array of const): string; overload; function Writeln(const S: string; const Arg1): string; overload; function Writeln(const S: string; const Arg1, Arg2): string; overload; |
De eerste twee zijn uiteraard prima gelukt, maar de andere twee krijg ik niet aan de praat. Die Arg1 en Arg2 kan ik niet aan een array of const meegeven, omdat de compiler dan onmiddelijk zegt Bad argument type in variable type array constructor. Prima, kan ik inkomen, want array of const is iets varianterigs. Maar helaas, Arg1 en Arg2 declareren als Variant geeft bij de call naar Format een EConvertError, waarschijnlijk omdat bij die call VarType() van Arg1 en Arg2 dan varUnknown is...
Kan dit eigenlijk wel, en hoe dan?
日本!🎌