Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Applikation keine Reaktion

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1822
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Kontaktdaten:

Applikation keine Reaktion

Beitrag von Rolf Ramacher » Do, 21. Apr 2016 8:03

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()
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de

georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1962
Registriert: Fr, 08. Feb 2008 21:29

Re: Applikation keine Reaktion

Beitrag von georg » Do, 21. Apr 2016 8:21

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.
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 144
Registriert: Di, 24. Jul 2007 9:17

Re: Applikation keine Reaktion

Beitrag von Scarmo » Do, 21. Apr 2016 8:23

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

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13903
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von brandelh » Do, 21. Apr 2016 8:29

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 ?
Gruß
Hubert

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1835
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von Herbert » Do, 21. Apr 2016 12:38

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.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1822
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von Rolf Ramacher » Mo, 25. Apr 2016 11:09

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
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 12549
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von Jan » Mo, 25. Apr 2016 11:24

Rolf,

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

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

Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1822
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von Rolf Ramacher » Mo, 25. Apr 2016 11:31

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.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de

Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 780
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von satmax » Mo, 25. Apr 2016 11:37

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.
Gruß
Markus

Antworten