Seite 1 von 1

Applikation keine Reaktion

Verfasst: Do, 21. Apr 2016 8:03
von Rolf Ramacher
Guten Morgen

ich habe bei einem Kunden ein Problem. Eine Applikation startet nicht. Es erscheint keine Maske gar nichts. Im Taksmanager taucht die exe 3x auf und kann auch nicht beendet werden.
Alle andere Module laufen ohne Probleme. Dieses Phänomen taucht nur bei diesem Kunden auf. Win7.

Hat jemand irgendeine Idee? Hier die proc main

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Inkey.ch"

#Define CRLF Chr(13)+Chr(10)

Proc Main()

   LOCAL nEvent, mp1, mp2, aFelder:={}, aSpwatch, aDb:={}, cNr:=""
   LOCAL oDlg, oXbp, drawingArea, aEditControls := {}, cArdek:="", oCombo

	If File("sprinter32.exe") 
	 	// Abfrage auf Festplatte ob OK
		lGo:=ZugriffSchutzLesen()
		If lGo=.f.
			Return 
		EndIf
	Endif

	// Sperrdatenbank prüfen
	use Sperre New Exclusive
	Set Index to "Sperre.cdx"
	Sperre->(OrdSetFocus("db"))

	If Sperre->(DbSeek(padr("spkonst",20)))
		If Sperre->Ein_Aus="E"
			Msgbox("SPKONST ist in Bearbeitung! - Gesperrt","Datenbankprüfung")
			Close Sperre
			Quit
		Else
			Sperre->Ein_Aus:="E"
		EndIf
	Else
		Sperre->(DbAppend())
		Sperre->Datenbank:="spkonst"
		Sperre->Ein_Aus:="E"
	EndIf
	Close Sperre
	
	AAdd(aDb,"spkonst")

	// Aktualisierung Spwatch.Dbf
 	aSpwatch:={"Konstanten","Endnummervergabe","E","",0}
	AnhangSpwatch(aSpwatch)

   oDlg := XbpDialog():new( SetAppWindow(), , {150,200}, {440,200}, , .F.)
   oDlg:taskList := .T.
   oDlg:title := "Endnummernvergabe"
	oDlg:setFontCompoundName( "9.Arial" )
   oDlg:create()
	CenterControl(oDlg)

   drawingArea := oDlg:drawingArea
   drawingArea:setFontCompoundName( "8.Arial" )

	use Spkonst New
	AAdd(aFelder,{"enrman",Spkonst->EnrMan})
	AAdd(aFelder,{"enr3st",Spkonst->Enr3st})
	Close Spkonst

	oStatic := XbpStatic():new( drawingArea,, {20, 120},  {320, 20} ) 
	oStatic:options := XBPSTATIC_TEXT_LEFT
	oStatic:caption := "Endnummervergabe 'Automatisch (A) oder Manuell (M)'"
	oStatic:Create()

	// Combobox mit aufklappbarer Listbox 
   oCombo1 := XbpCombobox():new( drawingArea, , {360,80}, {40,60}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oCombo1:type := XBPCOMBO_DROPDOWNLIST 
   oCombo1:tabStop := .T.
   oCombo1:create()

   // Datenlink von Eingabefeld zu LOCAL Variable 
   oCombo1:XbpSLE:dataLink := {|x| IIf( x==NIL, aFelder[1][2], aFelder[1][2] := x ) } 
   oCombo1:XbpSLE:setData() 
   bAction := {|mp1, mp2, obj| obj:XbpSLE:getData() }

   // Codeblock für Auswahl durch Up und Down Taste 
   oCombo1:ItemMarked := bAction 
	
   // Codeblock für Auswahl durch linken Mausklick in der Listbox 
   oCombo1:ItemSelected := bAction 
	
   // Daten aus Array in Combobox übertragen, Array verwerfen 
   oCombo1:addItem( "A" ) 
   oCombo1:addItem( "M" ) 
	oCombo1:setdata(aFelder[1][2])
	
	oStatic := XbpStatic():new( drawingArea,, {20, 090},  {320, 20} ) 
	oStatic:options := XBPSTATIC_TEXT_LEFT
	oStatic:caption := "Die letzten Stellen der Artikelnummer ?stellig '2/3'"
	oStatic:Create()

	// Combobox mit aufklappbarer Listbox 
   oCombo := XbpCombobox():new( drawingArea, , {360,50}, {40,60}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oCombo:type := XBPCOMBO_DROPDOWNLIST 
   oCombo:tabStop := .T.
   oCombo:create()

   // Datenlink von Eingabefeld zu LOCAL Variable 
   oCombo:XbpSLE:dataLink := {|x| IIf( x==NIL, aFelder[2][2], aFelder[2][2] := x ) } 
   oCombo:XbpSLE:setData() 
   bAction := {|mp1, mp2, obj| obj:XbpSLE:getData() }

   // Codeblock für Auswahl durch Up und Down Taste 
   oCombo:ItemMarked := bAction 
	
   // Codeblock für Auswahl durch linken Mausklick in der Listbox 
   oCombo:ItemSelected := bAction 
	
   // Daten aus Array in Combobox übertragen, Array verwerfen 
   oCombo:addItem( "2" ) 
   oCombo:addItem( "3" ) 
	oCombo:setdata(aFelder[2][2])

   oXbp := XbpPushButton():new( drawingArea, , {180,40}, {90,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
   oXbp:caption := "Abbruch"
   oXbp:tabStop := .T.
	oXbp:default:=.t.
   oXbp:create()
   oXbp:activate := {|| PostAppEvent( xbeP_Close ) }

   oXbp := XbpPushButton():new( drawingArea, , {280,40}, {90,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
   oXbp:caption := "Speichern"
   oXbp:tabStop := .T.
	oXbp:default:=.t.
   oXbp:create()
   oXbp:activate := {|| Speichern(aFelder,"",aSpwatch),PostAppEvent( xbeP_Close ) }

   oDlg:show()
	SetAppFocus(oCombo1)

   nEvent := xbe_None
   DO WHILE nEvent <> xbeP_Close
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      oXbp:handleEvent( nEvent, mp1, mp2 )
   ENDDO
	Freigabe(aDb)
	oDlg:destroy()

Re: Applikation keine Reaktion

Verfasst: Do, 21. Apr 2016 8:21
von georg
Hallo, Rolf -


einmal mit Debug-Information compilieren und beim Kunden (per Fernwartung) mit xppdbg laufen lassen und sehen, was passiert.

Mehr fällt mir dazu im Moment nicht ein.

Re: Applikation keine Reaktion

Verfasst: Do, 21. Apr 2016 8:23
von Scarmo
Hallo Rolf

Ich würde ganz zu Beginn mal eine MsgBox("Start") reinmachen damit Du siehst, ob überhaupt etwas ausgeführt wird. Ansonsten mal testen, wie es sich ohne Virenscanner verhält.

Gruss
Marco

Re: Applikation keine Reaktion

Verfasst: Do, 21. Apr 2016 8:29
von brandelh
Wird das Programm in C:\Programme ... ausgeführt ?
Dann versucht es eventuell eine Fehlermeldung zu schreiben, die aber wegen Schreibschutz ausfällt.
Genauso die XppFatal.log und somit sieht man nix.

direkt nach dem Start muss man das aktuelle Verzeichnis auf eines mit Schreibrechten umlegen oder gleich einen anderen Pfad nutzen.

XppError.PRG appSys etc. sind standard ?

Re: Applikation keine Reaktion

Verfasst: Do, 21. Apr 2016 12:38
von Herbert
brandelh hat geschrieben:Wird das Programm in C:\Programme ... ausgeführt ?
Dann versucht es eventuell eine Fehlermeldung zu schreiben, die aber wegen Schreibschutz ausfällt.
Genauso die XppFatal.log und somit sieht man nix.
Denke auch, dass ein Zugriffsproblem besteht. Falls das Programm in c:\Programme läuft oder in c:\benutzer... gearbeitet wird, passt's nicht unmbedingt (User Access Control ist ab Win7 ja verschärft worden)
Nimm ein neutrales Verzeichnis für Programm und Daten und es wird wohl klappen.

Re: Applikation keine Reaktion

Verfasst: Mo, 25. Apr 2016 11:09
von Rolf Ramacher
guten Morgen Leute

so es ist ein neues Antivierenprogramm auf dem Rechner installiert worden Gdata

das Programm startet jetzt nicht mehr 3x, sondern nur 1x im Taskmanager - es wird NICHT in Programm ausgeführt. im Verzeichnis c:\orga32 - hier sind alle Dateien enthalten. alle DLL usw.
Der User ist ebenfalls auch als Admin registriert.

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Inkey.ch"

#Define CRLF Chr(13)+Chr(10)

Proc Main()

   LOCAL nEvent, mp1, mp2, aFelder:={}, aSpwatch, aDb:={}, cNr:=""
   LOCAL oDlg, oXbp, drawingArea, aEditControls := {}, cArdek:="", oCombo, lGo:=.f.

msgbox("start")
	If File("sprinter32.exe") 
	 	// Abfrage auf Festplatte ob OK
		lGo:=ZugriffSchutzLesen()
msgbox(var2lchar(lGo),"lGo")
		If lGo=.f.
			Return 
		EndIf
	Endif

	// Sperrdatenbank prüfen
	use Sperre New Exclusive
	Set Index to "Sperre.cdx"
	Sperre->(OrdSetFocus("db"))

msgbox("sperre dbf geöffnet")
	If Sperre->(DbSeek(padr("spkonst",20)))
		If Sperre->Ein_Aus="E"
			Msgbox("SPKONST ist in Bearbeitung! - Gesperrt","Datenbankprüfung")
			Close Sperre
msgbox("führe gleich quit durch")
			Quit
		Else
			Sperre->Ein_Aus:="E"
		EndIf
	Else
		Sperre->(DbAppend())
		Sperre->Datenbank:="spkonst"
		Sperre->Ein_Aus:="E"
msgbox("sperre satz angehängt")
	EndIf
	Close Sperre
msgbox("sperre geschlossen")	
	AAdd(aDb,"spkonst")

	// Aktualisierung Spwatch.Dbf
 	aSpwatch:={"Konstanten","Endnummervergabe","E","",0}
	AnhangSpwatch(aSpwatch)

msgbox("Maskenaufbau")
   oDlg := XbpDialog():new( SetAppWindow(), , {150,200}, {440,200}, , .F.)
   oDlg:taskList := .T.
   oDlg:title := "Endnummernvergabe"
	oDlg:setFontCompoundName( "9.Arial" )
   oDlg:create()
	CenterControl(oDlg)

   drawingArea := oDlg:drawingArea
   drawingArea:setFontCompoundName( "8.Arial" )

	use Spkonst New
	AAdd(aFelder,{"enrman",Spkonst->EnrMan})
	AAdd(aFelder,{"enr3st",Spkonst->Enr3st})
	Close Spkonst

	oStatic := XbpStatic():new( drawingArea,, {20, 120},  {320, 20} ) 
	oStatic:options := XBPSTATIC_TEXT_LEFT
	oStatic:caption := "Endnummervergabe 'Automatisch (A) oder Manuell (M)'"
	oStatic:Create()

	// Combobox mit aufklappbarer Listbox 
   oCombo1 := XbpCombobox():new( drawingArea, , {360,80}, {40,60}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oCombo1:type := XBPCOMBO_DROPDOWNLIST 
   oCombo1:tabStop := .T.
   oCombo1:create()

   // Datenlink von Eingabefeld zu LOCAL Variable 
   oCombo1:XbpSLE:dataLink := {|x| IIf( x==NIL, aFelder[1][2], aFelder[1][2] := x ) } 
   oCombo1:XbpSLE:setData() 
   bAction := {|mp1, mp2, obj| obj:XbpSLE:getData() }

   // Codeblock für Auswahl durch Up und Down Taste 
   oCombo1:ItemMarked := bAction 
	
   // Codeblock für Auswahl durch linken Mausklick in der Listbox 
   oCombo1:ItemSelected := bAction 
	
   // Daten aus Array in Combobox übertragen, Array verwerfen 
   oCombo1:addItem( "A" ) 
   oCombo1:addItem( "M" ) 
	oCombo1:setdata(aFelder[1][2])
	
	oStatic := XbpStatic():new( drawingArea,, {20, 090},  {320, 20} ) 
	oStatic:options := XBPSTATIC_TEXT_LEFT
	oStatic:caption := "Die letzten Stellen der Artikelnummer ?stellig '2/3'"
	oStatic:Create()

	// Combobox mit aufklappbarer Listbox 
   oCombo := XbpCombobox():new( drawingArea, , {360,50}, {40,60}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oCombo:type := XBPCOMBO_DROPDOWNLIST 
   oCombo:tabStop := .T.
   oCombo:create()

   // Datenlink von Eingabefeld zu LOCAL Variable 
   oCombo:XbpSLE:dataLink := {|x| IIf( x==NIL, aFelder[2][2], aFelder[2][2] := x ) } 
   oCombo:XbpSLE:setData() 
   bAction := {|mp1, mp2, obj| obj:XbpSLE:getData() }

   // Codeblock für Auswahl durch Up und Down Taste 
   oCombo:ItemMarked := bAction 
	
   // Codeblock für Auswahl durch linken Mausklick in der Listbox 
   oCombo:ItemSelected := bAction 
	
   // Daten aus Array in Combobox übertragen, Array verwerfen 
   oCombo:addItem( "2" ) 
   oCombo:addItem( "3" ) 
	oCombo:setdata(aFelder[2][2])

   oXbp := XbpPushButton():new( drawingArea, , {180,40}, {90,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
   oXbp:caption := "Abbruch"
   oXbp:tabStop := .T.
	oXbp:default:=.t.
   oXbp:create()
   oXbp:activate := {|| PostAppEvent( xbeP_Close ) }

   oXbp := XbpPushButton():new( drawingArea, , {280,40}, {90,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
   oXbp:caption := "Speichern"
   oXbp:tabStop := .T.
	oXbp:default:=.t.
   oXbp:create()
   oXbp:activate := {|| Speichern(aFelder,"",aSpwatch),PostAppEvent( xbeP_Close ) }

   oDlg:show()
	SetAppFocus(oCombo1)

   nEvent := xbe_None
   DO WHILE nEvent <> xbeP_Close
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      oXbp:handleEvent( nEvent, mp1, mp2 )
   ENDDO
	Freigabe(aDb)
	oDlg:destroy()

	cNr:=LizenznrLesen()
	If cNr == "11"
		quit
	Endif
RETURN 
es erscheint noch nicht mal die msgbox("start")
ich stehe vor einem Rätsel

Re: Applikation keine Reaktion

Verfasst: Mo, 25. Apr 2016 11:24
von Jan
Rolf,

das spricht doch sehr dafür, daß das Problem in ZugriffSchutzLesen() auftritt. Hast Du das mal durchkontrolliert?

Jan

Re: Applikation keine Reaktion

Verfasst: Mo, 25. Apr 2016 11:31
von Rolf Ramacher
Hallo Jan,

nein daran kann es nicht liegen. die msgbox("start") vorher kommt ja erst gar nicht.
und außerdem ist die Funktion Zugriffschutzlesen() in allen programmteilen enthalten. und die funktionieren ja ohne Probleme.

Re: Applikation keine Reaktion

Verfasst: Mo, 25. Apr 2016 11:37
von satmax
Eingabeaufforderung als Admninistrator ausführen (egal was der Benutzer ist)
cd\orga32
Starten versuchen.

Wenn es nicht geht, mit
SET PATH=
(in der Eingabeaufforderung) die PATH Var auf leer setzen und nochmals veruschen.

Vorher immer im Taskmanager kontrollieren das keine Instanz Deines Programms aktiv ist.

Eventuell Virenscanner deaktivieren und wieder starten.