[Frage] Smartpart Skript-Start [Gelöst]

Schlagworte:
  • SmartPart
  • Start
  • Script

Hallo.

Ich möchte in meinem SmartPart eine Abfrage starten. Diese Ruft eine Textdatei ab und ließt ein paar Werte. Dies erfolgt über den Befehl OPEN, welcher sich im Parameterskript befinden sollte.

Nun kommen wir auch schon zum Problem - das Parameterskript wird (gleich wie das Masterskript) öfter ausgeführt. Besteht die Möglichkeit, einen Codeabschnitt im Parameterskript nur zum Beginn des Smartparts auszuführen? Ich weiß ich bin hier etwas pingelig aber ich glaube, dass das bei sehr langen Skripts durchaus zu einer Performance-Verbesserung führen würde, da nicht jedes mal, wenn das Parameterskript ausgeführt wird auf die Datei zugegriffen wird.

Lösung anzeigen Lösung verbergen

Die Lösung von Bertrand funktioniert leider nicht!
Man kann den Scriptdurchlauf testen, indem man mal einen externen Befehl startet bei "do what you want":

IF my_flag = 0 THEN
!do what you want
EXEC "D:\test.bat"
my_flag = 1
PARAMETERS my_flag = my_flag
ENDIF

D:\test.bat hat z.B. folgenden Inhalt:
dir d:\*.*
pause

Dann wird man merken, dass das schwarze DOS-Fenster beim Starten des SmartParts zwei mal und beim Beenden noch einmal aufpoppt!

Hello,

You can use a specific parameter to allow or not to go in a part of your code.
For example:
your parameter is: my_flag
At the beginning, the value of your parameter is 0.
During Parameter script, you use:

IF my_flag = 0 THEN 
   (do what you want)
   my_flag = 1 
   PARAMETERS my_flag = my_flag
ENDIF

At the end of 3D script, you add:
IF PREV_MODE = 0 THEN
   my_flag = 0 
   PARAMETERS my_flag = my_flag
ENDIF

"PREV_MODE" will be 0 only when you finished to use the SmartPart (when you "close" the SmartPart or when you refresh the SmartPart without showing the palette/dialog).


Hi Bertrand!

Thank's again for the quick and easy solution!
Everything runs perfectly now

Keine Angst, das Lesen der Datei erfolgt über eine Datei-Cache!
D.h. die Datei wird nur beim ersten mal physisch gelesen, danach wird nichts mehr gemacht!
Beim Schreiben der Datei ist es genauso: Geschrieben wird die Datei erst beim Beenden des SmartParts!

Der eingebaute Cache ist zugleich für die Beschränkung verantwortlich, dass eine Datei in einem Modifikations-Durchlauf eines SmartParts
entweder nur lesend (MODE=RO) oder überschreibend(MODE=WO) oder anfügend (MODE=WA) geöffnet werden kann.
Das Öffnen derselben Datei in einem anderen Modus ist deshalb nicht zugelassen!

Der Cache wurde extra eingebaut, weil die Scripte ja durchaus öfter ausgeführt werden, also z.B. werden während des Ziehens eines 3D-Griffes das Parameter-Script und das 3D-Script ausgeführt. Wenn da jedesmal ein Dateizugriff stattfinden müßte, wäre das fatal!

Alles Klar - Danke für die Erklärung!

Die Lösung von Bertrand funktioniert leider nicht!
Man kann den Scriptdurchlauf testen, indem man mal einen externen Befehl startet bei "do what you want":

IF my_flag = 0 THEN
!do what you want
EXEC "D:\test.bat"
my_flag = 1
PARAMETERS my_flag = my_flag
ENDIF

D:\test.bat hat z.B. folgenden Inhalt:
dir d:\*.*
pause

Dann wird man merken, dass das schwarze DOS-Fenster beim Starten des SmartParts zwei mal und beim Beenden noch einmal aufpoppt!

Yes, it only works in the development environment...
I gave this idea without trying it, only in my head. SmartParts procedures are unnecessarily complicated, but you have to live with them.
So forget what I said, but it can inspire to find better.


Explaining that it doesn't work isn't the solution either.
So what is the solution?