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: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Applikation keine Reaktion

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

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Applikation keine Reaktion

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

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

Re: Applikation keine Reaktion

Beitrag 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag 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 ?
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag 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.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Applikation keine Reaktion

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

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Applikation keine Reaktion

Beitrag 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.
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: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Applikation keine Reaktion

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