Man braucht einfach nur eine Zwischenvariable:
Delphi-Quellcode:
var
zeichen : Char;
begin
...
zeichen := Chr(i);
Funktionxy(@zeichen);
Ein direkter Cast wie z.B. PWideChar(i) kann nach hinten losgehen, denn wenn i=1 dann ist PWideChar(i) gleich $00000001 (also ein Zeiger der auf die Adresse 1 zeigt). ==> Zugriffsverletzung
Was aber gebraucht wird ist ein Zeiger, der auf einen 2-Byte Speicherplatz zeigt, dessen Inhalt = 1 ist.
Also könnte man auf die Idee kommen PWideChar(@i) zu übergeben.
Ein Integer ist aber 4 Bytes lang und man ist dann abhängig von der CPU-Architektur (Big-Endian vs. Small-Endian).
Mit einer Zwischenvariablen erspart man sich die ganzen Probleme.