Array Assign [ERLEDIGT]

Still in use?

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Array Assign [ERLEDIGT]

Beitrag von Rolf Ramacher »

ein Kunde erhält beim Wareneingang nach auswahl der Bestellung die besagte Fehlermeldung. Einzelne WE aus dieser Bestellung gingen bisher ohne Probleme. Auch andere Bestellungen ohne Probleme.

Hat jemand eine idee ?
Zuletzt geändert von Rolf Ramacher am Mo, 06. Aug 2012 14:07, insgesamt 1-mal geändert.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Tom »

Hat jemand eine idee ?
Könnte an einem Programmfehler liegen. :badgrin:

Spaß beiseite. Wieder mal eine exzellent ausführliche Beschreibung der Fehlersituation, ergänzt um Informationen, die wir natürlich sofort verarbeiten können, weil wir a) alle mit Deinem Bestellsystem arbeiten und b) auch die Quellcodes davon haben. :wink:

"Array assign" ist vermutlich nicht der gesamte Fehlertext. Hilfreich wäre auch noch die Sourcecode-Zeile, in der der Fehler auftritt. Vermutlich aber versuchst Du an dieser Stelle, auf einen Bereich im Array zuzugreifen, der nicht existiert, etwa wie hier:

Code: Alles auswählen

a := { 1, 2, 3 }
? a[4] // dürfte den fraglichen Fehler generieren
Es kommen vermutlich Daten, die weitgehend leer sind, und Du versuchst trotzdem, in irgendeinem Hilfsarray rumzudoktoren.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Array Assign

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:ein Kunde erhält beim Wareneingang nach auswahl
was für eine "auswahl" unter "Cl*pper" ?
gruss by OHR
Jimmy
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Rolf Ramacher »

Code: Alles auswählen

         for x = 1 to 34
            z = (zz - 1) * 34 + x  && z = Index von vmegr bezgl. Fil. + GrӇe
            vmegr[z]=sumegr[x]     && absoluter Index, alles auf eine Filiale
            vmegrb[z]=sumegr[x]    && verteilt
         next
Der Fehler tritt in der Zeile auf vmegr[z]=sumegr[x]

Aber wie gesagt nur bei dieser einen Bestellung. An den Daten kann ich nichts falsches erkennen.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Jan »

Ich tippe darauf, das x oder z größer sind als die Arraylänge.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Tom »

Toller Tip, Jan. Zumal es überhaupt kein y gibt. :wink:

@Rolf:

1. Was enthält "zz"? Grundsätzlich und im Moment des Fehlers?
2. Bist Du sicher, dass "(zz - 1) * 34 + x" so richtig ist? Punktrechnung geht vor Strichrechnung. "zz - 1" würde zunächst mit 34 multipliziert werden, danach käme x hinzu. Falls "34 + x" zum Ergebnis von "zz - 1" addiert werden sollte, müsstest Du den letzten Term klammern.

Der Hase liegt sehr wahrscheinlich in 1. begraben. zz enthält einen Wert, der zu einem z führt, das außerhalb des Arrays zeigt - entweder 0 (Null) oder > Länge des Arrays. Eins von beidem.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Jan »

Tom hat geschrieben:Toller Tip, Jan. Zumal es überhaupt kein y gibt. :wink:
Gnagnagna :doubt: Hast ja Recht. Nehmen wir also statt y ein z.

Aber grundsätzlich liegt es meiner Menung nach daran, das eine der beiden Varibalen einen Wert enthält, der nicht ein Arrayelement ansprechen kann. Ob das jetzt ein zu hoher Wert ist, oder 0, oder sonstwas, ist dann auch egal.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von brandelh »

Ich schließe mich Jan an und vermute, dass durch Rundungsfehler z.B. mehr als 34 oder weniger als 1 rauskommt die Indexwerte überschritten werden.
Hier wäre ein MAX() und MIN() eine gute Idee ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Tom »

Hier wäre ein MAX() und MIN() eine gute Idee
Die bessere Idee wäre, so zu programmieren, dass das nicht auftreten kann. Immerhin scheinen die Arraydaten ja irgendwie zu den "zz"-Werten zu gehören. Baut man jetzt Begrenzungsmechanismen für seltsame Fehlersituationen ein, vermeidet man zwar möglicherweise diesen Fehler, aber zugleich riskiert man, mit inhaltlich falschen Daten zu arbeiten.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von brandelh »

Hallo Tom,

gerade weil oben der Indexwert z berechnet wird, halte ich die Begrenzung auf die möglichen Arraygrenzen für sehr sinnvoll.
Das meinte ich mit min() und max(), aber natürlich kann man dieses auch anders erreichen.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Array Assign

Beitrag von AUGE_OHR »

Aber wie gesagt nur bei dieser einen Bestellung.
An den Daten kann ich nichts falsches erkennen.
ich versuche mal einen anderen Weg und gehe davon aus das deine Berechnungen doch stimmen dann wäre wieder die Frage was an
"nur bei dieser einen Bestellung" anders ist ?

da du hier nach Filialen gehst würde ich mir mal "alles" von "der" Filiale ansehen ob dir etwas auffällt
auch würde ich "davor" und "danach" die Daten durchsehen denn die Fehlermeldung / Zeile muss nicht immer "exakt" stimmen ...

zur Fehlersuche, wenn du es nicht reproduzieren kannst, würde ich mit BEGIN / SEQUENCE / RECOVER arbeiten und die Fehler mit Var2Char() in ein Logfile schreiben
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Tom »

Hallo, Hubert.

Ich vermute, dass dieser Code von Rolf eindeutige Bedinungen/Voraussetzungen hat. Die Ermittlung irgendwelcher Werte aus dem Array ist vermutlich der umgekehrte Weg eines vorigen, der den Arrayindex überhaupt erst erzeugt hat. Ich habe x Positionen, aus denen ich etwas wählen kann, und speichere dann die Positionsnummer (den Index). Will ich wieder damit arbeiten (oder irgendwas anzeigen), ermittle ich aus dem Array der Positionen über meinen Indexwert wieder den dazu passenden Eintrag, was im gezeigten Code geschehen soll. Das ist wahrscheinlich eine vereinfachte Wiedergabe dessen, was da geschieht oder geschehen soll. Deshalb wären Bedingungen/Begrenzungen in dieser Abfrage bestenfalls Kosmetik; aus irgendeinem Grund referenziert ein gespeicherter Wert nicht mehr richtig auf das Array. Das kann daran liegen, dass ein Eintrag unerwarteterweise leer ist, also eine Null erzeugt, und einen Nulleintrag gibt es bei Arrays nicht. Oder es ist inzwischen ein Referenzeintrag gelöscht worden, das Array ist also kürzer als es im Moment war, als der zu speichernde Wert erzeugt wurde. Auch hier wäre mit einer Begrenzung ein Fehler zu vermeiden, aber der Rückgabewert wäre dann inhaltlich falsch. Und das wäre in meinen Augen bei einer Geschäftsanwendung noch schlimmer als ein Laufzeitfehler. Rolf muss also herausfinden, warum die Referenz nicht mehr stimmt, und daran arbeiten.
Herzlich,
Tom
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Rolf Ramacher »

Ich habe es inzwischen herrausgefunden. Es wurde ein bestimmtes feld nicht befüllt. daher hat er Zähler nicht richtig funtk. jetzt wieder OK

danke
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Array Assign

Beitrag von Koverhage »

Dann kannst Du das ja als erledigt kennzeichnen!
Wenn Du da schon dabei bist, die anderen erledigten auch.
Gruß
Klaus
Antworten