Einloggen Suche | Aktive Themen
List index out of bounds Optionen
chuck
Geschrieben: Sunday, August 11, 2013 1:59:24 PM

Gruppen: Kunde

Beiträge: 167

market maker
An das L+P Team

Bei einer Tabelle habe ich folgende Fehlermeldung bekommen und was bedeutet sie?


chuck hat die folgenden Bilder hochgeladen:
List Index.JPG

Marcus Lieck
Geschrieben: Thursday, August 15, 2013 9:25:56 AM

Gruppen: Mitarbeiter

Beiträge: 470

Tai-Pan RealtimeTai-Pan End-of-Daymarket makerbis. Realtime-Terminal
Hallo Chuck,

die Fehlermeldung kann auf sehr viele Dinge hinweisen:

- der Listenindex ist außerhalb des erlaubten Bereichs
- eine Access Violation/Zugriffsverletzung ist aufgetreten
- eine falsche Erkennung von Tabellenaliases

An welcher Stelle bzw. bei welcher Funktion ist der Fehler aufgetreten?
Ist die Fehlermeldung reproduzierbar?

Mit freundlichen Grüssen

Marcus Lieck

Leiter Produktsupport | Lenz+Partner GmbH | vwd group
Phone: +49 231 9153-500 | Fax: +49 231 9153-599
hotline@lp-software.de | www.LP-software.de | www.vwd.com
chuck
Geschrieben: Friday, August 16, 2013 9:26:25 AM

Gruppen: Kunde

Beiträge: 167

market maker
Hallo Herr Lieck,

die Meldung kam, als ich eine weitere Spalte an eine vorhandene Tabelle anhängen wollte. Dabei fragt ja das System die Spaltenformel und Überschrift ab. Als ich diese eingegeben hatte und damit den Vorgang abschließen wollte, kam diese Fehlermeldung. Ich habe dies noch 2 mal versucht aber es kam immer die selbe Meldung und es wurde keine Spalte angefügt.

Da die Tabelle schon sehr viele Spalten (30) hatte, habe ich vermutet, dass vielleicht die maximale Anzahl von Spalten erreicht sei.

Nachdem ich Ihre Antwort erhalten habe, habe ich MarketMaker neu gestartet, die Tabelle aufgerufen und eine neue Spalte angehängt (gleiche Spaltenformel, gleiche Überschrift). Diesmal funktionierte es ohne Problem. Vielleicht hatte sich das System in der damaligen Sitzung irgendwie verrannt.

Trotzdem bitte teilen Sie mir mit, ob es eine Begrenzung in der Anzahl der Spalten gibt und wie dieser Wert dann ist.

Vielen Dank für Ihre Unterstützung.

Chuck
Marcus Lieck
Geschrieben: Friday, August 16, 2013 9:31:28 AM

Gruppen: Mitarbeiter

Beiträge: 470

Tai-Pan RealtimeTai-Pan End-of-Daymarket makerbis. Realtime-Terminal
Hallo Chuck,

eine Spaltenbegrenzung innerhalb von Tabellen liegt nicht vor.
Eine Art Begrenzung dürften durch die Informationen die in den Spalten abgefragt werden ggf. erreicht werden. Je nach Komplexität der Formeln und Abfragen die die Spalten beinhalten, könnte der Zugriff auf die Datenbank überlastet werden.

Mit freundlichen Grüssen
Marcus Lieck


Leiter Produktsupport | Lenz+Partner GmbH | vwd group
Phone: +49 231 9153-500 | Fax: +49 231 9153-599
hotline@lp-software.de | www.LP-software.de | www.vwd.com
chuck
Geschrieben: Friday, August 16, 2013 10:48:28 AM

Gruppen: Kunde

Beiträge: 167

market maker
Hallo Herr Lieck,

eine Überlastung der Datenbank sehe ich nicht. Aus der Datenbank werden z.B. Wertpapiername, Open, Close, High und Low zu jedem Wertpapier (Zeile der Tabelle) für Berechnungen in Tabellen benötigt. Die Berechnungen der Formeln (Makros / Funktionen) erfolgen in der Präformel der Tabelle, so wie ich es in meinem Beitrag Tabellenberechnung beschrieben habe. Somit werden für jedes Wertpapier die benötigten Werte nur einmal aus der Datenbank gelesen und die Ergebnisse als Liste an die Tabelle übergeben, so dass in den Spaltenformeln nur mit nth[x] auf das jeweilige berechnete Feld in der Liste zugegriffen werden muss.

Die Begrenzung (Zeitdauer) hängt damit nur von der Rechenleistung des Prozessors ab und nicht von dem Flaschenhals Zugriffszeiten und Häufigkeit auf die Datenbank.

Will man z.B. die Bewegungen des Rangs in einem Zeitraum über Y-Wochen für alle Wertpapiere z.B. des Dax in einem Diagramm als Kerzen darstellen, dann berechnet man die Zeitreihe des Rangs für jedes Wertpapier nur einmal in der Präformel und übergibt die Reihe des Rangs als Element einer Liste an die Tabelle. In den Spaltenformeln ermittelt man dann aus diesert Reihe

a) den aktuellen/letzten Wert (close); Nth[x].at[heute;5]
b) den höchsten Wert (z.B. für Y= 4 Wochen); Nth[x].periodenmaximum[5*$Y].at[heute;5]
c) den niedrigstenWert (z.B. für Y= 4 Wochen); Nth[x].periodenminimum[5*$Y].at[heute;5]
d) Den Wert vor Y Wochen (Open); $Datum_Heute:=nth[x].at[heute;5].datum;
Nth[x].at[($Datum_Heute.addworkingdays[-5*$Y;5]) {Wert vor Y-Wochen}

Sie sehen, also auch bei solchen Aufgabenstellungen werden die benötigten Datenbank Werte nur einmal aus der Datenbank gelesen. Auch die berechnungsintensive Funktion Rang ist nur 1-mal für die 4 Spalten zu berechnen, da sie als Reihe in einer Liste an die Tabelle übergeben wird. Nur die Ermittlung der 4 Werte zu dem jeweiligen Zeitpunkt wird in den 4 Spaltenformeln durchgeführt.

Diese Art der Realisierung ist auf eine Minimierung der benötigten Rechenzeit ausgelegt. Überlegungen zu solchen Optimierungen sollte man sich immer machen, wenn man die Lösung erarbeitet hat, denn es ist nervig vor einem Bildschirm zu sitzen, Kaffee zu trinken und auf die Ausgabe der Ergebnisse zu warten.

Chuck
Benutzer die diese Diskussion aktuell lesen
Guest

Powered by Yet Another Forum.net version 1.9.1.8 (NET v4.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.

Durch die Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zum Datenschutz finden Sie hier