AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Readln und Variant

Ein Thema von c113plpbr · begonnen am 29. Mai 2006 · letzter Beitrag vom 29. Mai 2006
Antwort Antwort
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#1

Readln und Variant

  Alt 29. Mai 2006, 15:18
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Readln und Variant

  Alt 29. Mai 2006, 15:30
Versuch mal
1.) Untypisierten out-Parameter.
2.) Ersetze out durch var
3.) Umweg über lokale Variable
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Readln und Variant

  Alt 29. Mai 2006, 18:47
Zitat von mkinzler:
Versuch mal
1.) Untypisierten out-Parameter.
Hab ich bereits probiert, leider ohne effekt, gleiche fehlermeldung
Zitat von mkinzler:
2.) Ersetze out durch var
wie bei 1.)
Zitat von mkinzler:
3.) Umweg über lokale Variable
Von welchem typ?
Also mit ner lokalen Variant-variable gehts auch ned ...

ciao,
Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Readln und Variant

  Alt 29. Mai 2006, 18:57
Die Idee mit readln muss wohl scheitern, denn:
Beim "normalen" read/readln wird eine typisierte Variable übergeben.
Die read funktion weiss, welcher Datentyp verlangt wird und reagiert demsprechend.
Durch die Verwendung von Variant als Out-Parameter geht diese Information verloren
und kann auch nicht rekonstruiert werden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Readln und Variant

  Alt 29. Mai 2006, 19:01
Zitat von shmia:
Die Idee mit readln muss wohl scheitern, denn:
Beim "normalen" read/readln wird eine typisierte Variable übergeben.
Die read funktion weiss, welcher Datentyp verlangt wird und reagiert demsprechend.
Durch die Verwendung von Variant als Out-Parameter geht diese Information verloren
und kann auch nicht rekonstruiert werden.
Hmm ... klingt logisch ... meinst du es gibt ne andere "praktische" lösung?

ciao & thx,
Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Readln und Variant

  Alt 29. Mai 2006, 19:18
Man könnte ein COM-Objekt für die Konsole erstellen.
Für .NET gibt es anscheinend schon eine Konsolenklasse.
Es wäre günstig, wenn man die Methoden und Properties gleich wie bei .NET benamsen würde.
Dieses COM-Objekt wäre dann ziemlich vielseitig einsetzbar:
* für Pascalscript
* für VB-Script
* für JavaScript
Wahrscheinlich gibt es schon so eine COM-Klasse irgendwo im Internet; man müsste es nur finden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Readln und Variant

  Alt 29. Mai 2006, 19:29
Zitat von shmia:
Man könnte ein COM-Objekt für die Konsole erstellen.
oO ... davon hab ich absolut keine ahnung ... nun, dann muss ich vermutlich das teil ... ewig oft überladen ... *grml* ...

ciao & thx,
Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz