![]() |
[dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Hallo zusammen,
ich beschäftige mich seit Kurzem mit Delphi Web Script und versuche aus Kompatibilitätsgründen bereits vorhandene Variablen inklusive deren Werten in die Variablenliste von dwscript zu bekommen. Der Code dafür sieht so aus:
Delphi-Quellcode:
Mein Problem ist nun aber, dass ich in dem Event nicht gefunden habe wo der Variablenname drin steht:
var
NewVar: TdwsGlobal; begin for CurrentVar in MeineBisherigenVariablen do begin NewVar := dwsMainUnit.Variables.Add; NewVar.Name := CurrentVar.Key; NewVar.DataType := 'String'; NewVar.OnReadVar := ReadEventVar; NewVar.OnWriteVar := WriteEventVar;
Delphi-Quellcode:
Hat jemand von euch eine Ahnung?
procedure TAbc.ReadEventVar(info: TProgramInfo; var value: Variant);
// ich vermute einmal in info, aber wo dort? Vielen Dank, Schönen Gruß, Sebastian |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Hi
---Blödsinn--- |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Hi,
ich hab in unserem Programm einen Zugriff auf die Variablen gefunden (von einem ehemaligen Programmierer, ich versteh den Code leider nicht vollständig), der auf Info Variablen so zugreift
Delphi-Quellcode:
, wobei ExternalObjects vom Typ TStrings ist. Leider wird dort nicht das ReadEvent genutzt, so das ich es nicht genau sagen kann, aber das Info ist auch vom Typ TProgramInfo - evtl. hat das im Event übergebene Info.Vars nur genau ein Element? Ich habe allerdings auch nicht herausgefunden, wie man an die Elemente herankommt, OHNE den String zu übergeben :cry:
Info.Vars[ExternalObjects[i]]
In unserem Code wird durch ExternalObjects iteriert ... Ich hoffe, das ist wenigstens ein wenig hilfreich lg rainer |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Danke, aber leider stehen die anderen Variablen offenbar gar nicht in diesem Info-Objekt, so dass dieser Zugriff gar nicht geht. Ich habe die Symboltabelle durchiteriert, dort sind aber keine Symbole enthalten. Auch die Parameter sind leer.
In dem Unittest zu den Events wird sinnigerweise nur ein Wert unabhängig vom Variablennamen zugewiesen... |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Vielleicht pro Variable ein eigener Event?
|
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Ja, das wäre eine Option. Daran habe ich gar nicht gedacht, danke.
Allerdings bin ich darauf auch deshalb nicht gekommen, weil es irgendwie von hinten durch die Brust ins Auge geschossen ist. Aber ich werde dann wohl wirklich für jede Variable noch extra ein Transitobjekt anlegen... |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Ich würde ein Script generieren, in dem die Variablen deklariert sind und diese dann vor Ausführung setzen und danach abfragen.
Das funktioniert natürlich nicht, wenn sich die Variablen von außen verändern dürfen, solange das Skript läuft.
Delphi-Quellcode:
So in etwa (mein Code ist 7 Jahre alt)
Info.Vars['MyVar'] := 123;
Info.Func['MainProgram'].Call; Writeln('MyVar ', VarToStr(Info.Vars['MyVar'])); PS: FastScript ist einfacher und mehr auf die Verbindung mit deiner Anwendung ausgelegt: Dafür sind die deklarativen Möglichkeiten begrenzt: Klassen und Objekte deklarierst Du -glaub ich- gar nicht, sondern übergibst sie als Delphi-Instanz. Ist aber praktisch. FastScript ist -glaube ich- auch umsonst. |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Zitat:
![]() |
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Hach, immer diese Wortklauberei mit Bart Schon irgendwie überflüssig, wie Aufrechtschreibfehlerhinweiserei.
|
AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
Ich habe weder auf Rechtschreibfehler hingewiesen noch auf eine falsche Ausdrucksweise, sondern auf den Kostenfaktor.
Es ist immer wieder ein Erlebnis, mit Dir zu diskutieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz