Das kommt davon, wenn man nur so kurze Statements schreibt...Lucike wrote:if...end? Wieso? Ich will von der Fabriktypennummer zum Fabrikentyp. Das geht am sparsamsten mit dem Skip-Befehl.
Oder was meinst Du?
Stimmt, so wie das Skript jetzt konzipiert ist, ist das die sparsamste Lösung.
Nur wird z.Zt. für jede einzulesende Fabrik (Wegschreiben auch, ist aber eher sekundär) die gesamte Abfrage durchlaufen. D.h. es werden immer n Vergleiche getätigt, auch wenn man bereits nach z.B. 3 Vergleichen die passende Fabrik gefunden hat. Bei ca. 1500 Fabriken, die dadurch eingelesen werden, dürfte das schon messbar sein (nur ne Annahme, zugegeben).
Das kann man dadurch umgehen, indem man entweder über ein "return"-Statement den Wert zurückgibt (das ginge auch mit "skip") und die weitere Bearbeitung des Skriptes beendet, oder jede Abfrage statt skip mit if...end macht und nach der Zuweisung des Fab-Types aus den weiteren Abfragen rausspringt, z.B. mit nem Label. Kurzes Beispiel; sicher mit Fehlern, was die Label-Syntax angeht, ich nutze die eher selten.
Code: Select all
001 if $FactoryType == '001'
002 $Factory = Argonen Agrarzentrum
003 goto label MATCH
004 end
005
006 * .
007 * .
008
009 * Ende der Abfragen
010 MATCH:
011 * Weiter im Text
Puh, war das lang
CU,MF