Erklärung für Fehlermeldung?

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

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:

Erklärung für Fehlermeldung?

Beitrag von Jan »

Ich habe gerade von einer Kundin dieses Fehlerprotokoll zugesandt bekommen:

Code: Alles auswählen

Sprachen-Version    : 1.90.355
Betriebssystem      :Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: N VALUE:0
          -> VALTYPE: N VALUE:2
oError:canDefault   : .F.
oError:canRetry     : .F.
oError:canSubstitute: .T.
oError:cargo        : NIL
oError:description  : Zahlenwert zu gro▀ oder zu klein
oError:filename     : 
oError:genCode      : 10
oError:operation    : <0> * <2>
oError:osCode       : 0
oError:severity     : 2
oError:subCode      : 5
oError:subSystem    : BASE
oError:thread       : 5
oError:tries        : 0
Was soll das bedeuten? 0*2 gibt einen zu großen oder zu kleinen Zahlenwert???

Die Codezeile sieht so aus:

Code: Alles auswählen

aPersonendaten[Len(aPersonendaten)][13] := aPersonendaten[i][13] * 2
Hat jemand dafür eine Erklärung? Das Teil ist schon tausende Male vollkommen normal durchgelaufen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Erklärung für Fehlermeldung?

Beitrag von Lewi »

Es sieht so aus, dass i=0 und es dann bei aPersonendaten[0][13] zu einem Laufzeitfehler kommt.
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Hallo Olaf,

das kann es leider nicht sein, das wär zu einfach. i kann niemals 0 sein. Element [13] aber sehr wohl, das wird damit initialisiert, damit die Multiplikation immer klappt.

Und die Fehlermeldung sagt ja auch irgwendwas von der Multiplikation mit 0. Was doch mathematisch gesehen kein Problem ist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erklärung für Fehlermeldung?

Beitrag von Werner_Bayern »

Servus Jan,

das alte Problem bei Win 64bit Division durch Null jetzt auch bei Multiplikation mal Null? PDR 6130 oder PDR 6286?
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Halo Werner,

hmmm. Die beiden PDR sprechen aber von Division. Und den Hotfix 35 habe ich natürlich installiert.

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: Erklärung für Fehlermeldung?

Beitrag von brandelh »

die Fehlermeldung bezieht sich auf die Multiplikation, damit sind die beiden Einzelelemente schon aufgelöst worden:
aPersonendaten[13] => 0
2 => 2
0 * 2 => 0 und zwar ohne irgendwelche Zweifel.

War es ein einmaliger Fehler oder kannst du es nachvollziehen ?

Eine solche Fehlermeldung habe ich noch nie gesehen.
Gruß
Hubert
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Hubert,

das erste mal das ich diesen Fehler hatte. Die Funktion läuft so seit mehr als fünf Jahren. Und nein, ich kenne sowas auch nicht, vor Allem - der Text der Fehlermeldung irritiert mich, denn bei einer Multiplikation kann es doch keinen zu großen oder zu kleinen Wert geben ... OK, zu groß vielleicht, wenn man die Grenzen einer Variablen sprengt. Aber das passiert da ganz sicher nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Erklärung für Fehlermeldung?

Beitrag von Martin Altmann »

Was für eine Fehlermeldung bekommst Du denn bei den folgenden Operationen:

Code: Alles auswählen

0 * "2"
"0" * 2
"0" * "2"
Nur mal so als dumme Idee...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Hallo Martin,

das wird sehr sicher eine andere Fehlermeldung ergeben. Da dann ein Typemismatch vorliegt. Aber hier gibt die Fehermeldung ja ganz klar an, das beide Werte numerische sind. Und reproduzierbar ist der Fehler ja ohnehin nicht für mich. Mal eben ausprobieren ist leider nicht ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Erklärung für Fehlermeldung?

Beitrag von Herbert »

Jan hat geschrieben: Die Codezeile sieht so aus:

Code: Alles auswählen

aPersonendaten[Len(aPersonendaten)][13] := aPersonendaten[i][13] * 2
Jan, schau mal die linke Seite an.
Wenn aPersonendaten[13] null ist, dann könnte eventuell Len(aPersonendaten) auch null sein, das heisst, man kann nicht zuweisen.
Grüsse Herbert
Immer in Bewegung...
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: Erklärung für Fehlermeldung?

Beitrag von brandelh »

Herbert hat geschrieben:
Jan hat geschrieben:Wenn aPersonendaten[13] null ist, dann könnte eventuell Len(aPersonendaten) auch null sein, das heisst, man kann nicht zuweisen.

Code: Alles auswählen

aPersonendaten[Len(aPersonendaten)][13] => aPersonendaten[0][13]
müsste aber einen "subscript out of range" Fehler erzeugen.
Gruß
Hubert
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Hallo Herbert,

nein, das kann es nicht sein. Das Array hat immer mindestens die Länge 2. Garantiert.

Und außerdem wäre die Fehlermeldung dann eine andere, die würde auf den Zugriff eines ungültigen Arrayinhaltes hinweisen.

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: Erklärung für Fehlermeldung?

Beitrag von brandelh »

PS: ich tippe auf einmalige kosmische Störung oder eine Hardware Störung ;-)
Gruß
Hubert
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: Erklärung für Fehlermeldung?

Beitrag von brandelh »

Jan hat geschrieben:Hallo Hubert,
nein, das kann es nicht sein. Das Array hat immer mindestens die Länge 2. Garantiert.
Und außerdem wäre die Fehlermeldung dann eine andere, die würde auf den Zugriff eines ungültigen Arrayinhaltes hinweisen.
Jan
Herbert hatte das vorgeschlagen und ich hatte ihm mit den gleichen Argumenten wie du widersprochen :badgrin:

Also auch du kannst uns nicht auseinander halten [-X
Gruß
Hubert
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: Erklärung für Fehlermeldung?

Beitrag von brandelh »

wobei ...

auch wenn ein Array 100 Zeilen und 1000 Spalten enthielte, eine 0 als Zugriffsindex bringt immer einen Fehler "subscript out of range" :badgrin:
Gruß
Hubert
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Richtig. Aber ein Len(aArray) ergibt dann halt kein 0

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Erklärung für Fehlermeldung?

Beitrag von Herbert »

Hubert, Herbert... wir machen ja dasselbe...

Ich hoffte einfach auf einen anderen Ansatz.
Die logische Fehlermeldung wäre das out of range, was mir wohl beusst ist. Aber Fehlermeldungen haben gerne eine Eigendynamik, insbesondere, wenn die Ursache komplexer ist.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Erklärung für Fehlermeldung?

Beitrag von Herbert »

Jan hat geschrieben:Richtig. Aber ein Len(aArray) ergibt dann halt kein 0
Jan
OK, und was ist dort für ein Wert drinnen, bevor du den neuen Inhalt schreiben willst? Ein False eventuell? (Ja, ich weiss, da sollte auch eine andere Fehlermeldung kommen)
Grüsse Herbert
Immer in Bewegung...
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Hallo Herbert,

grundsätzlich vorgegeben sind Werte von 0 bis 3. Es gibt kein Arrayelement, das nicht einen dieser Werte hat.

In diesem Fall eine 0, das sagt ja auch die Ferhlermeldung aus. Und der Verweis auf die Codezeile gibt das auch her, denn dort wird der gespeicherte Wert mit 2 Multipliziert. Da in der Fehlermeldung steht, das 0*2 nicht geht, muß also eine 0 drin gestanden haben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Erklärung für Fehlermeldung?

Beitrag von Koverhage »

Egal ob Hotfix 35 installiert ist (Jan vielleicht bei Dir aber nicht bei den Runtimes des Kuden ?)
Es kann eigentlich nur eine Division durch 0 sein, die nicht ausreichend abgefangen wird.
Xbase++ zeigt dann auch nur 0 an, hat aber Intern einen ganz anderen Wert.

Einfach mal mit VX (wenn der so toll ist, ich habe den leider nicht und konnte den damals auch nicht installieren) testen
aPersonendaten[13] := Wert der durch 0 dividiert wird
eventuell kann VX den Wert darstellen.
Gruß
Klaus
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: Erklärung für Fehlermeldung?

Beitrag von Rolf Ramacher »

Hi Jan

kann es denn sein, das ein Wert NIL hat. ??
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
komnick
UDF-Programmierer
UDF-Programmierer
Beiträge: 75
Registriert: Mi, 04. Jun 2014 9:56
Wohnort: Berlin
Hat sich bedankt: 1 Mal
Danksagung erhalten: 5 Mal

Re: Erklärung für Fehlermeldung?

Beitrag von komnick »

Hallo Jan,

vielleicht macht 64bit Probleme, wenn aPersonendaten[13] nahe 0, aber ungleich 0 ist?
(also z.B. aPersonendaten[13] := 1 - 1/3 - 2/3)
Auf welche Art wird aPersonendaten[13] gefüllt? Fehlt hier ein Runden?

Gruß, Martin.
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Klaus,

die Kunden haben exakt die gleichen dll wie ich. Das läuft über die Updatefunktion automatisch.

VX würde bei einer Division durch 0 den gleichen Laufzeitfehler geben wie sonst auch. Aber hier gibt es im Code keine Division, und auch die fehelrmeldung weißt nichts darauf hin.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Rolf,

wie jetzt schon mehrfach geschrieben: Nein!

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Erklärung für Fehlermeldung?

Beitrag von Jan »

Martin,

das kann es nicht sein. Denn wenn der Wert minimal daneben liegt kann das Ergebnis nicht zu groß oder zu klein sein. Ich habe ja hier kein Rundungsproblem sondern einen Laufzeitfehler.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten