Autor Thema: illegal function call aus einem agent heraus  (Gelesen 7041 mal)

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
illegal function call aus einem agent heraus
« 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
« Letzte Änderung: 29.10.04 - 14:20:09 von adminnaddel »

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: illegal function call aus einem agent heraus
« Antwort #1 am: 29.10.04 - 12:53:28 »
Illegal function call an dieser Stelle würde Sinn ergeben, wenn pos# = 0 wäre ...

Bernhard

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: illegal function call aus einem agent heraus
« Antwort #2 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

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: illegal function call aus einem agent heraus
« Antwort #3 am: 29.10.04 - 13:46:04 »
Ist in notesnametmp kein "@" enthalten, siehst Du garantiert einen "illegal function call" ...

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: illegal function call aus einem agent heraus
« Antwort #4 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
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: illegal function call aus einem agent heraus
« Antwort #5 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

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: illegal function call aus einem agent heraus
« Antwort #6 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

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: illegal function call aus einem agent heraus
« Antwort #7 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 ??
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: illegal function call aus einem agent heraus
« Antwort #8 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

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: illegal function call aus einem agent heraus
« Antwort #9 am: 29.10.04 - 14:20:47 »
Falls es noch nicht richtig rübergekommen ist


DANKE

 ;D

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: illegal function call aus einem agent heraus
« Antwort #10 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 ....
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: illegal function call aus einem agent heraus
« Antwort #11 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: illegal function call aus einem agent heraus
« Antwort #12 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

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: illegal function call aus einem agent heraus
« Antwort #13 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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: illegal function call aus einem agent heraus
« Antwort #14 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 ?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: illegal function call aus einem agent heraus
« Antwort #15 am: 29.10.04 - 22:07:53 »
Jo, ich mach mich mal daran, das Glossar ins Best Pracices umzuziehen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz