Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname? (https://www.delphipraxis.net/168160-%5Bdwscript%5D-tdwsglobal-onreadvar-wo-steht-der-variablenname.html)

jaenicke 8. Mai 2012 13:45

[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:
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;
Mein Problem ist nun aber, dass ich in dem Event nicht gefunden habe wo der Variablenname drin steht:
Delphi-Quellcode:
procedure TAbc.ReadEventVar(info: TProgramInfo; var value: Variant);
// ich vermute einmal in info, aber wo dort?
Hat jemand von euch eine Ahnung?

Vielen Dank,
Schönen Gruß,
Sebastian

Iwo Asnet 8. Mai 2012 14:02

AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
 
Hi
---Blödsinn---

RainerO 8. Mai 2012 16:29

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:
Info.Vars[ExternalObjects[i]]
, 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:
In unserem Code wird durch ExternalObjects iteriert ...

Ich hoffe, das ist wenigstens ein wenig hilfreich

lg rainer

jaenicke 8. Mai 2012 16:39

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...

Iwo Asnet 8. Mai 2012 16:43

AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
 
Vielleicht pro Variable ein eigener Event?

jaenicke 8. Mai 2012 19:04

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...

Furtbichler 8. Mai 2012 19:29

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:
Info.Vars['MyVar'] := 123;
Info.Func['MainProgram'].Call;
Writeln('MyVar ', VarToStr(Info.Vars['MyVar']));
So in etwa (mein Code ist 7 Jahre alt)

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.

Thom 8. Mai 2012 20:46

AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
 
Zitat:

Zitat von Furtbichler (Beitrag 1165442)
FastScript ist -glaube ich- auch umsonst.

Ob's umsonst ist, kann ich nicht beurteilen - kostenlos ist es jedenfalls nicht.

Furtbichler 8. Mai 2012 20:52

AW: [dwscript] TdwsGlobal.OnReadVar, wo steht der Variablenname?
 
Hach, immer diese Wortklauberei mit Bart Schon irgendwie überflüssig, wie Aufrechtschreibfehlerhinweiserei.

Thom 8. Mai 2012 21:21

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 17:37 Uhr.
Seite 1 von 2  1 2      

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