NetErr()

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

NetErr()

Beitrag von Manfred »

mal eine ganz allgemeine Frage, wenn DbUseArea() benutzt wird und es gibt Probleme damit, müßte dann nicht ein NetErr() abgefragt werden können? Oder noch anders gefragt, wie lange versucht Xbase++ eigentlich die Tabelle zu öffnen, bis es einen NetEror() geben würde? Kann das eingestellt werden?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: NetErr()

Beitrag von Tom »

NetErr() geht nur auf .T., wenn die Tabelle nicht geöffnet werden konnte, weil sie im exklusiven Zugriff durch andere Benutzer ist - oder umgekehrt Du exklusiven Zugriff versuchst, die Tabelle aber anderswo (auch "shared") offen ist. Wenn also irgendwo jemand ein USE ... EXCLUSIVE gemacht hat und Du machst USE (mit oder ohne EXCLUSIVE), geht NetErr() anschließend auf .T., die Workarea ist leer. Bei anderen Öffnungsfehlern (Datei nicht vorhanden, korrupte Datei usw. usf.) feuert NetErr() nicht, stattdessen gibt es einen Laufzeitfehler.
Über DbeInfo() kann man LockRetry und LockDelay setzen, aber m.E. nicht so etwas wie "UseRetry". Das hat ja auch nicht wirklich Sinn. Jemand, der eine Tabelle exklusiv hält, macht das ja aus Gründen - die meistens nicht ein paar Millisekunden später wieder weg sind. Wenn Du aber von Deiner eigenen App weißt, dass es einen exklusiven Zugriff möglicherweise nur für ein paar Sekündchen gibt, weil mal eben gepackt werden muss, kannst Du die Wiederholung ja in einer Öffnungsfunktion programmieren.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: NetErr()

Beitrag von Manfred »

Hi Tom,
es geht in dem Fall darum, das ich derzeit Probleme mit Mehrfachzugriff im Netz habe. Es kann ab und an eine Zeit dauern, bis das Programm eine DBF öffnen kann. (so meine vermutung) Dabei graut es aber aus und ist nicht mehr bedienbar für eine gewisse Zeit. Leider dauert diese Zeit manchmal etwas länger als der User bereit ist zu warten. Bis ich nun das Problem behoben habe möchte ich gerne einen Workaround programmieren, der zumindest auf sowas reagiert. Aber leider gibt es dann kein Feedback vom Programm sondern einfach nur Stillstand.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: NetErr()

Beitrag von Tom »

Hallo, Manfred.

Mmh. Da würde ich eher an die Ursachen gehen. Entweder kaskadiert ein Virenscanner oder das Netz ist sehr schlecht konfiguriert.

Du kannst natürlich auch die Tabellenöffnung irgendwie in einen Thread legen, der nach einer gewissen Zeit gekillt wird, wenn er nicht antwortet, und bei Erfolg holst Du Dir die Workarea über den Zerospace. Aber, wie gesagt. Die Ursachenbekämpfung ist vermutlich sinnvoller.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: NetErr()

Beitrag von Manfred »

Tom,
Du hast recht. Ursache bekämpfen ist besser. Die Ursache kenne ich vermutlich, aber sie läßt sich nicht so schnell aus der Welt schaffen. Mich würde aber auch direkt interessieren, warum das Programm so lange rumwerkelt und nicht früher aufgibt. Das würde mir schon für den Anfang reichen für den Lerneffekt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: NetErr()

Beitrag von Tom »

Das kannst Du mit Tools wie ProcMon herausbekommen: www.sysinternals.com
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: NetErr()

Beitrag von Manfred »

das Programm sagt mir was, aber was soll ich damit machen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: NetErr()

Beitrag von HaPe »

Hallo Manfred !
das Programm sagt mir was, aber was soll ich damit machen?
Auf dein Programm während des Problemfalles anwenden.
Damit siehst du welche Dateien es öffnet/schließt, in der Registry rumrödelt, auf dem Netzwerk Zugriffe durchführt, Stackaktivitäten usw..
--
Hans-Peter
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: NetErr()

Beitrag von Tom »

Genau. Das loggt alle Events und Requests und all dieses Zeug - und zeigt Dir, wie lange was braucht und was ggf. querfunkt. Du kannst filtern, beispielsweise auf Anwendungen oder, was hier vermutlich sinnvoller wäre, auf Verzeichnisse. Dann siehst Du, was genau passiert, wenn Deine Anwendung versucht, sich ein Handle auf eine Tabelle zu holen.
Herzlich,
Tom
Antworten