Fehler beim Datei öffnen

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Fehler beim Datei öffnen

Beitrag von Jan »

Moin,

gerade bin ich ein klein wenig am Verzweifeln. Ich möche eine Datei öffnen. Aber plötzlich gibt das einen Laufzeitfehler:
Xbase++ Version : Xbase++ (R) Version 2.00.623
Betriebssystem :Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE:_DLL ÿt©¢u ÝA
-> VALTYPE: C VALUE:L T $@ p$@ @$@$ ˆ Ó5O`
oError:canDefault : .F.
oError:canRetry : .F.
oError:canSubstitute: .T.
oError:cargo : NIL
oError:description : Interne Datenstrukturen beschädigt
oError:filename :
oError:genCode : 41
oError:operation : :open
oError:osCode : 0
oError:severity : 2
oError:subCode : 5
oError:subSystem : BASE
oError:thread : 4
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von XBPFILEDIALOG:OPEN(652)
Aufgerufen von OEFFNEGEDCOMDATEI(229)
Aufgerufen von (B)GEDCOMEINLESEN1(187)
Aufgerufen von XBPPUSHBUTTON:HANDLEEVENT(1522)
Aufgerufen von GEDCOMEINLESEN1(198)
Der Code dazu ist:

Code: Alles auswählen

FUNCTION OeffneGEDCOMDatei

LOCAL oFileDlg
LOCAL cFile

oFileDlg := XbpFileDialog():new()
oFileDlg:fileFilters := {{"Familienbuch " + langtext(LANG_GEDCOMDateiEinlesen), "*.ged"}}
oFileDlg:title := langText(LANG_GEDCOMDateiAuswaehlen)
oFileDlg:create()
oFileDlg:center := .T.
cFile := oFileDlg:open() //MEMVAR->gcAppPfad)

oFileDlg:show()

RETURN cFile
Zusätzlich zu den Irritiationen warum und was sind das für merkwürdige Sonderzeichen im Fehlerprotokoll kommt noch:
  • Starte ich das Programm im Debugmodus aus der Workbench, klappt alles
  • Starte ich das Programm in der Workbench mit ShiftF9, knallt es
  • Starte ich das Programm aus dem Explorer, knallt es
Ich hab das Programm schon komplett neu aufgebaut, alle Abhängigkeiten neu aufgebaut, alle obj, res, usw. neu aufgebaut. Hilft alles nichts.

Was kann da los sein?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Martin Altmann »

Moin,
eine der beteiligten DLL-Dateien ist veraltet / beschädigt / vom Virenscanner geblockt, würde ich denken.
Schau nach, was für ein Pfad in der Workbench eingestellt ist für die zu nutzenden DLL-Dateien du vergleich diese mit denen, die in Deinem Anwendungsverzeichnis liegen.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von brandelh »

Die seltsamen Zeichenketten in den ersten Parametern zeigen an, dass die Inhalte der Parameter oder Zeiger defekt waren (wirre Buchstaben/Zeichen statt den Pfaden etc.)

Es kann sein, dass ein anderes Programm / Treiber verrückt gespielt hat oder eine sonstige Störung den Speicher manipuliert hat.
Rechner neu starten und testen ob es immer noch auftritt.

PS: gestern verweigerte mir Chrome den Start weil SECUR32.DLL defekt sei ...
System überprüft und einige Dateien wurden widerhergestellt (Windows Reparatur) ... jetzt geht es wieder ... keine Ahnung warum.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

DLL sind kontroliert - alles OK
Rechner mehrfach neu gestartet - keine Änderung
Aber: Der XbpFileDialog funktioniert an anderen Stellen des Programms (andere DLL, aber gleiches Projekt) sauber! Nur an dieser einen Stelle nicht. Auch das Kopieren des funktionierenden Codes an diese Stelle bringt nichts.

Die Verwirrung steigt ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Fehler beim Datei öffnen

Beitrag von Herbert »

Interne Datenstruckturen... bezieht sich das nicht auf die zu öffnende Datei?
Mit der Gefahr wieder "ganz am Thema vorbei" zu schreiben, die Frage, was ist, wenn du dort eine andere Datei ansprichst?
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Fehler beim Datei öffnen

Beitrag von Manfred »

öhm,

denke mal an den Fehler von gestern Jan. Ich hatte eine falsche Engine geladen. Das verursachte auch einen internen Dateistrukturfehler.
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
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

Hallo Herbert,

der Fehler pasiert beim Aufbau des Datei-Dialoges. Da konnte ich noch garkeine Datei öffnen. Außerdem hatte ich ja geschrieben das ich den Code eines funktionierenden Dialoges des Programms an diese Stelle kopiert hatte - gleicher Fehler.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

Ich hab noch mal ein wenig weiter getestet. Die betreffende prg aus einer Sicherung eingespielt - gleicher Fehler. Insgesamt habe ich in dem Programm 7x ein XbpFileDialog, alle liegen in verschiedenen prg, aber teilweise mehrere in der gleichen dll. Zwei davon produzieren genau diesen Fehler - beide in verschiedenen prg, aber der gleichen dll. Alle anderen fünf funktionieren - alle davon ebenfalls in anderen prg, aber zwei davon in der gleichen dll wie die beiden, die knallen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Fehler beim Datei öffnen

Beitrag von AUGE_OHR »

hi,

wenn du mehrere XbpFileDialog() in einer DLL hast "könnte" es sein das sich die "Handle" gegenseitig blockieren wenn du Threads verwendest. der CG "sollte" zwar aufräumen ( aber wann ... ) und deshalb würde ich dort o:Destroy() verwenden um das "Handle" explizit freizugeben.
Jan hat geschrieben:

Code: Alles auswählen

cFile := oFileDlg:open() //MEMVAR->gcAppPfad)
// die Anzeige passiert durch o:open()
// oFileDlg:show()
// das würde ich einfügen
oFileDlg:destroy()
RETURN cFile
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

Hallo Jimmy,

das kann es eher nicht sein. Ich starte das Programm und rufe sofort den betreffenden Dialog auf. Knallt. Da kann es also keine Reste von vorher übrig sein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Fehler beim Datei öffnen

Beitrag von Herbert »

Jan, Jimmy meint, dass ein früherer Dialog oder Reste davon stören könnten. Daher müsstest du bei jedem Dialog explizit einen Destroy einbauen...
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

Hallo Herbert,

"normale" Dialoge beende ich immer mit oDlg:destroy(), oDlg := NIL. Zur Sicherheit. Andere GUI-Elemente im Übrigen auch, wenn ich die nicht mit dem Parent zusammen destroye.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Fehler beim Datei öffnen

Beitrag von AUGE_OHR »

Jan hat geschrieben:das kann es eher nicht sein. Ich starte das Programm und rufe sofort den betreffenden Dialog auf. Knallt. Da kann es also keine Reste von vorher übrig sein.
OK ... aber irgendwas muss "anders" sein ...

XbpFileDialog() basierd auf der GetOpenFileName API function
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
hier eine Demo mit Ot4xb
OPENFILENAME.zip
(1.39 KiB) 155-mal heruntergeladen
zum Code:

Code: Alles auswählen

oFileDlg:create()
oFileDlg:center := .T.
cFile := oFileDlg:open()
die Instanzvariablen, wie "center", sollten vor o:Create() gesetzt werden.
bei o:Open() könntest du Path+"*.ged" als Parameter angeben.

btw. mit o:Enter := .T. oder als 2nd Parameter bei o:Open() verschwindet links der Treeview !

Fragen :
um wie viel Dateien im Verzeichnis reden wir ?
wie "lang" ist dein langtext(LANG_GEDCOMDateiEinlesen) ?
wird die FUNCTION OeffneGEDCOMDatei() nur aus Modulen der DLL angesprochen ? ( -> STATIC FUNCTION )
Jan hat geschrieben:"normale" Dialoge beende ich immer mit oDlg:destroy(), oDlg := NIL. Zur Sicherheit. Andere GUI-Elemente im Übrigen auch, wenn ich die nicht mit dem Parent zusammen destroye.
war nur zur Anmerkung weil XbpFileDialog() / XbpPrintDialog() / XbpFontDialog() eben kein "normalen" Dialoge sind.
https://msdn.microsoft.com/en-us/librar ... #open_file
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

Jimmy,

:center hatte ich vorgestern schon komplett raus genommen, keine Änderung. An den fünf funktionierenden Stellen ist der :caption-Eintrag an gleicher Stelle, und da klappt es ja (trotzdem).

Die Captions etc. sind egal, die Länge ist kurz, und wie gesagt - wenn ich einen funktionierenden Dateidialog an diese Stelle kopioere, knallt es trotzdem.

Jeder FileDialog wird nur genau von einer Stelle aus, die in der gleichen dll liegt, angesprochen. Ich bin noch nicht dazu gekommen, da eine allgemein verwendbare Version daraus zu schreiben.

Wie ich schon schrieb: Ich öffne KEINEN anderen Systemdialog vorher. Also können da auch keine Rest von vorhanden sein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Fehler beim Datei öffnen

Beitrag von AUGE_OHR »

Jan hat geschrieben:Wie ich schon schrieb: Ich öffne KEINEN anderen Systemdialog vorher. Also können da auch keine Rest von vorhanden sein.
... wenn du, nach dem XppFatal.LOG, neu gebootet hast.

probieren es doch mal mit der ot4xb Version ob der an den Stellen läuft.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fehler beim Datei öffnen

Beitrag von Jan »

Jimmy,

die gute Nachricht: Das funktioniert. Die schlechte Nachricht: Aber nicht so wie ich das möchte. Und leider habe ich Null Ahnung, was all die Parameter sein sollen bzw. was ich daran drehen kann.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Fehler beim Datei öffnen

Beitrag von AUGE_OHR »

Jan hat geschrieben:die gute Nachricht: Das funktioniert. Die schlechte Nachricht: Aber nicht so wie ich das möchte.
hm ... "was" macht er nicht wie du willst ?
zumindest zeigt es das "der Weg dorthin" OK ist und es an XbpFileDialog() ( Structure Länge 76 statt 88 ? ) liegen muss.

hier noch ein Openfile Beispiel mit DragDrop :)
PdfCombine.zip
need ot4xb
(1.54 KiB) 172-mal heruntergeladen
Jan hat geschrieben:Und leider habe ich Null Ahnung, was all die Parameter sein sollen bzw. was ich daran drehen kann.
die Parameter findest du unter https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
p.s. die meisten Flags dienen dem Erscheinungsbild. wenn der User "nur" auswählen soll reicht meistens

Code: Alles auswählen

oOfn:Flags := nOr( OFN_EXPLORER  , OFN_ENABLESIZING )
gruss by OHR
Jimmy
Antworten