Das Notes Forum

Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: adminnaddel am 29.10.04 - 12:49:25

Titel: illegal function call aus einem agent heraus
Beitrag von: adminnaddel am 29.10.04 - 12:49:25
Hallo liebe Gemeinde,

eine Agent macht mir seit der letzten Nacht sorgen!

Jede Nacht greift er aus einer db auf eine andere db zu und holt sich Feldwerte und kippt sie rüber! Nun aber, urplötzlich läuft er nicht mehr und schmeißt mir diese Fehlermeldung heraus:

illegal function call

und das an der Stelle!

Set notesname = New notesname(Trim(Left(notesnametmp, pos# - 1)))

Ich glaube, die Stelle an dem er auf die Bretter geht, ist nicht so interessant, sondern eher, daß im debugger zumindestens alle wichtigen Daten aus der db gezogen wird. Die View stimmt, dass war nämlich meine erste Vermutung!

Der Server der db hatte Performance da habe ich mal folgende Überlegung gehabt:

mal ne fixup bzw updall über die db laufen lassen?! -...- vielleicht hat ja die View einen mitbekommen!?

Grüße

PS: wäre sehr wichtig
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: koehlerbv am 29.10.04 - 12:53:28
Illegal function call an dieser Stelle würde Sinn ergeben, wenn pos# = 0 wäre ...

Bernhard
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: adminnaddel am 29.10.04 - 13:40:42
Nun ja,

ich hätte mal mehr mitgeben sollen  ;D

...
notesnametmp = docosdb.notes(0)
pos# = Instr(notesnametmp, "@")
         
Set notesname = New notesname(Trim(Left(notesnametmp, pos# - 1)))
...

vielleicht sollte man mal nachschauen, was sich im debugger hinter dem string notesnametmp verbirgt ???

Oder

Grüße
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: koehlerbv am 29.10.04 - 13:46:04
Ist in notesnametmp kein "@" enthalten, siehst Du garantiert einen "illegal function call" ...

Bernhard
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: Semeaphoros am 29.10.04 - 13:54:08
Das mit dem Debugger ist mal eine ganz gute Idee, auf die man schon von selber hätte kommen können, und dann natürlich eine Validierung mit

if pos# > 0 Then
  notesnametmp = Instr(.......)
end if
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: adminnaddel am 29.10.04 - 14:08:37
Zitat
Das mit dem Debugger ist mal eine ganz gute Idee, auf die man schon von selber hätte kommen können, und dann natürlich eine Validierung mit

 ::) die db liegt aber net bei uns!

Zitat
if pos# > 0 Then
  notesnametmp = Instr(.......)
end if
??? .. warum sollte =0 sein? ... Instr liefert mir doch so oder so einen Wert, solange der das Feld gefüllt ist!

Grüße
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: koehlerbv am 29.10.04 - 14:13:55
Instr liefert 0, wenn das Zeichen nicht enthalten ist. Und Left (irgendwas, 0 - 1) ist ein illegal function call ...

Bernhard
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: Semeaphoros am 29.10.04 - 14:18:06
Liebe Nadel (leider kann ich Dir den Namen nicht sagen ... da er weder im Fuss noch in der Marginale steht ....)

Instr bringt tatsächlich immer einen Wert zurück, 0 ist ja schliesslich auch ein Wert, und hat seine berechtigte Bedeutung, wie Bernhard eben auch gesagt hat.

Wieso soll für den Entwanzer eine Rolle spielen, ob die DB bei Euch oder woanders liegt? Notes ist doch schliesslich eine verteilte Infrastruktur ??
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: adminnaddel am 29.10.04 - 14:19:54
OKAY .... nunmal Klartext  ::)

Natürlich ist 0 möglich, doch nur:


string1 is the empty string ("")   0
string2 is not found after begin in string1   0
begin is larger than the length of string1   0
string2 is the empty string ("")   The value of begin. If you omit begin, InStr returns the value 1.
string1 is NULL   NULL
string2 is NULL   NULL
begin or compMethod is NULL   Error

Aber ich muss davon ausgehen, das der String gefüllt ist!
Aber danke .... das ist auf jeden Fall ein Ansatz!!

Grüße
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: adminnaddel am 29.10.04 - 14:20:47
Falls es noch nicht richtig rübergekommen ist


DANKE

 ;D
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: Semeaphoros am 29.10.04 - 14:28:01
Bitte, ist rübergekommen  ;D

Jo, auch wenn der Name gefüllt ist, gibt es immer noch 0, wenn

Zitat
string2 is not found after begin in string1

heisst, wenn @ nicht vorkommt. Abgesehen davon sollte man nie etwas selbstverständliches als gegeben ansehen, wenn vorher schon ein unbehandelter Fehler aufgetreten ist, bekommst Du plötzlich lauter Leer, wo Du vorher behauptet hast, da ist immer ein Wert vorhanden ....
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: Axel am 29.10.04 - 18:25:58
Hi,

eines hab ich in den ganzen Jahren bei der ganzen Programmiererei (egal ob mit LotusScript, VB, VBA etc.) gelernt: In einem Programm ist vielleicht 20-30% Funktion, der Rest sind Fehlerabfragen und - behandlungen.

Also, auch wenn du dir noch so sicher bist, das eine bestimmte Situation nie vorkommen kann, irgendwann tritt sie auf und dann...  :o



Axel
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: koehlerbv am 29.10.04 - 18:36:01
Absolut wahr. Jede Zeile muss unter dem Aspekt "Was erwarte ich - aber was kann sonst noch passieren ?" betrachtet werden.
Es gibt ganz wenige Prüfungen, die man auslassen kann wie
Set dbCurrent = NotesSession.CurrentDatabase
oder
strUserName = NotesSession.UserName

Alles andere muss hinterfragt werden.

Der Programmierer, der "adminnaddel"s Applikation geschrieben hat, war nicht nur "optimistisch", sondern grob fahrlässig. Selbst, wenn der Wert aus einem Feld kommt, in dem in der Eingabevalidierung auf das Vorhandensein der "Zuckerschnecke" (schwedische Bezeichnung für den "Klammeraffen"  ;D ) geprüft wird: Das kann man alles umgehen, oder man vergisst es mit den Jahren - und irgendwann scheppert es.

Ich habe gerade die Tage eine Routine geschrieben und mir hinterher selber gesagt: He, das dauert aber lange - erst nach über 200 Zeilen kommst Du zum Kern der Sache - vorab waren alles grundlegende Instantiierungen und vor allem Überprüfungen. Erst dann kamen die eigentlichen funktionalen Teile (wieder mit vielen Überprüfungen).

Bernhard
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: TMC am 29.10.04 - 18:51:17
"Zuckerschnecke" (schwedische Bezeichnung für den "Klammeraffen"  ;D )

Kennt das Jens schon für den Glossar?
Ich rufe ihn mal: JEEEEEEEEEEEENNNNS
 ;D
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: koehlerbv am 29.10.04 - 19:27:09
Das kann man noch erweitern:

Zitat
Der Klammeraffe hat in den meisten Sprachen einen Tiernamen erhalten. In Frankreich heisst er escargot (Schnecke), in Holland apestaartje (Affenschwänzchen), in Italien chiocciolina (Schnecklein), in Dänemark snabel-a (Rüssel-a), in Norwegen kanelbolle oder grisehale (Zimtschnecke, Sauschwanz), in Schweden kattfot oder kringla (Katzenpfote, Kringel), in Finnland kissahanta oder miumau (Katzenschwanz, Miau), in Polen malpa (Affe), in Russland sobatschka (Hündchen), in Tschechien zavinac (Rollmops), in Ungarn kukac (Wurm), in Bulgarien majmunka (Äffchen) und in Griechenland papaki (Entchen).

Dieter E. Zimmer: Die Bibliothek der Zukunft, Hoffmann und Campe, ISBN 3-455-10421-5

In Dänisch kenne ich allerdings den elefantsnabel (Elefantenrüssel) und nicht das snabel-a, aber das hat nix zu heissen.

Bernhard

PS: Verdient das Wörterbuch nicht längst einen festen Platz irgendwo, statt "irgendwo" im Off-Topic 'rumlungern zu müssen ?
Titel: Re: illegal function call aus einem agent heraus
Beitrag von: Semeaphoros am 29.10.04 - 22:07:53
Jo, ich mach mich mal daran, das Glossar ins Best Pracices umzuziehen.