Hallo
dp'ler,
ich versuche gerade ein Programm mit
PascalScript auszustatten. Die dort laufenden Scripts sollten nun aber auch aus- und eingaben in einem Konsolenfenster tätigen können. Dazu möchte ich die Funktionen Read, Readln, Write und Writeln zur Verfügung stellen.
Nun, da es mir bisher nicht gelungen ist, einen Pointer auf eine dieser Funktionen zu bekommen, versuche ich das ganze gerade mit callback-funktionen (also so proxy-artig). Soweit kein Problem, aber man kann ja natürlich den Funktionen nicht nur strings übergeben, sondern auch integer-, single-, usw. Variablen übergeben. Zuerst dachte ich, einfach die funktion überladen. Aber bei der "menge" an overloads fängt man dann schon an nach ner anderen methode zu suchen, und mir fiel dann auch der typ/die klasse variant ein.
Bei Writeln funktioniert das auch ganz gut, aber der Compiler akzeptiert bei Readln keine variants, so bekomme ich immer die fehlermeldung:
Fehler
[Pascal Error] psd_main.pas(249): E2055 Illegal type in Read/Readln statement
Nunja ... ich hoffe ihr habt mein Problem verstanden und könnt mir helfen. Aber zum überladen bin ich ehrlich gesagt zu faul ...
.
Achja, und zur veranschaulichung noch die Callback-Funktion:
Delphi-Quellcode:
//Funktioniert nicht
procedure TForm1.sfRead(out t: variant);
begin
Read(t);
end;
//Funktioniert bestens ^^
procedure TForm1.sfWrite(t: variant);
begin
Write(t);
end;
ciao & thx,
Philipp