...es sieht im Augenblick aus, als würde ich damit richtig liegen...
Das scheint mit der Bereichvariablen zu tun zu haben und wie XProfan die verwaltet.
Natives Dateilisting
-
-
-
OK - Problem tritt nicht mehr auf. Habe ich Recht, lauert da eine gefährliche Falle...
-
Es geht hier um einen vermutlichen Fehler in XProfan und was man unter Umständen - wenn dem so ist - beim Programmieren mit der Sprache vermeiden sollte. Will deshalb hoffen, dass hier möglichst viele Leute mitmachen.
Hier mal zwei EXE Dateien zum Testen
Die Dateien listen den Inhalt eines Ordners, den man vorher auswählen muss. Beide Dateien tun im Prinzip das gleiche auf die gleiche Art und Weise - nur die Art und Weise, wie ich Speicher eines Buffers reserviere ist unterschiedlich (einmal über XPRofan und einmal über API). Die Dateien bitte zum Testen auch nicht nur einmal ausführen, sondern am besten zwanzig Mal hintereinander. Das tritt nicht immer auf! Bitte auch mal unterschiedliche Ordner wählen.
Wie sehen die Fehler aus:
- Die Listbox kann komplett leer sein.
- Einige Zeilen der Listbox sind komplett leer.
- Es sind Einträge doppelt vorhanden.
Ich muss folgendes wissen:
- Betriebsystem und ob eine 64Bit Version vorliegt. Unter Windows7 64Bit tritt das häufiger auf.
- Ob ein Fehler auftritt.
- Welcher Fehler auftritt.
- Welche Datei den Fehler macht.
-
Bei der NTQueryDirectoryFile_Fehler.exe
bleibt die Listbox leer.
Windows Version : Vista 64 Bit -
Danke! Das meinte ich.
Bei der anderen EXE nicht? Beide Codes tun im Prinzip das gleiche.
Tritt bei niemandem in der anderen EXe ein Fehler auf, gibt es da, wie es aussieht, ein etwas größeres Problem in XProfan.
Ich stelle hier zum Schluss noch Codes zum Testen rein, dann kann man das mit neueren Profanversionen ausprobieren. Evtl. tritt es da nicht so häufig auf. -
MüllSchlucker
Die NTQueryDirectoryFile_Fehler.exe kann ich nicht runterladen.
Mein Browser "Dragon" unterbricht hier die Verbindung und ich werde auch nichts an der "scharfen" Einstellung ändern.
Die andere EXE macht das, was sie machen soll:
Sie listet den Inhalt des Ordners auf.
Windows-8 32-Bit -
Tritt nur bei der einen oben genannten auf.
Die andere funktioniert. -
Dann scheine ich da auf der richtigen Spur zu sein.
Hier geht's zum Test: https://www.paules-pc-forum.de/forum/speziell…html#post977171 -
Bei mir läuft die erste EXE 100% fehlerfrei, die zweite bricht zu 50% nach den ersten 0 bis 3 Dateien ab.
Gruß
Jonathan -
Dich brauche ich gleich noch. Ich schicke dir per PM Code. Ich möchte wissen, ob der Code bei dir mit X2 läuft oder auch eine leere oder fehlerhafte Box bringt.
Läuft der Code bei dir unter X2 immer, muss an XProfan erst mal nichts gemacht werden. -
Ich füge das mal hier ein:
Zitat von Jonathan
Keine Crashes - weder Interpreter, noch Runtime.
Gruß
Jonathan
Solange X2 in dem Code keinen Fehler bringt, muss an XProfan nichts gemacht werden.
Hier ist der Code zum TestenCode
Alles anzeigen'##################################################################################### '######### Native XProfan Code von AHT ######### '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] ######### '##################################################################################### Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock# Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength& Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes& Declare Offset1%, Event%, Wait&, FileInformation% Ordner$ = ChooseDir$("Bitte Ordner auswählen:") If Ordner$ <> "" If Len(Ordner$) > 3 If Right$(Ordner$, 1) = "\" Ordner$ = Left$(Ordner$, len(Ordner$)-1) endif endif Ordner2$ = Ordner$ Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$ DIM Object_Attrib#, 24 DIM LSA_UNICODE#, 8 Dim UNICODE#, len(Ordner$) * 2 + 4 DIM StatusBlock#, 24 Dim Filename#, 600 Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2)) Long Object_Attrib#, 0 = 24 Long Object_Attrib#, 4 = 0 Long Object_Attrib#, 12 = $40 | $80 WORD LSA_UNICODE#, 0 = len(Ordner$) * 2 WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2 LONG LSA_UNICODE#, 4 = UNICODE# Long Object_Attrib#, 8 = LSA_UNICODE# Event% = External("kernel32", "CreateEventA", 0, 0, 0, 0) NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1) IF NtFehler% = 0 FileInformationLength& = 30000000 Dim FileInformation#, FileInformationLength& Clear StatusBlock# NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event%, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 0, 0, 1) Offset% = 0 If (NtFehler% = 0) or (NtFehler% = 259) Wait& = External("kernel32", "WaitForSingleObject", Event%, 10000) Repeat FileNameLength& = Long(FileInformation#, Offset% + 60) Attributes& = Long(FileInformation#, Offset% + 56) Clear Filename# Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0) If Attributes& | $10 = Attributes& AddString "[' + String$(Filename#, 0) + ']" else AddString String$(Filename#, 0) endif Offset1% = Long(FileInformation#, Offset%) Offset% = Offset% + Offset1% until Offset1% = 0 else Messagebox("Ein Fehler ist aufgetreten: " + str$(NtFehler%), "Fehler!", 16) endif NtFehler% = External("ntdll", "NtClose", FileHandle%) Dispose FileInformation# endif EditBox("inhalt von " + Ordner2$, 0) Dispose Filename# Dispose StatusBlock# Dispose UNICODE# Dispose LSA_UNICODE# Dispose Object_Attrib# endif
Sollte dieser Code irgendwo mit der neuen Version von XProfan Fehler machen (Editbox wird nicht korrekt mit den Ordner und Dateien gefüllt), hier bitte Rückmeldung geben. Das kann zeitweise passieren. -
Habe jetzt 10 mal immer einen anderen Ordner ausgewählt und anzeigen lassen.
Keine Probleme
XProfanversion: 12.1-NT -
Der Code von Heute läuft bei mir Win7-64. Bei den Gestrigen kommt der Fehler bei mir ungefähr bei jedem 20. Aufruf.
Gruß Volkmar
-
Kann man erkennen, daß ein Fehler vorliegt? (Dann gäbe es einen Workaround, nämlich einfach nochmal abfragen)
-
Es kann sein, dass in der X2 Version der Fehler nicht mehr vorhanden ist - sicher ist das noch nicht. Ist der Fehler in XProfan noch drin, funktioniert im Prinzip gar nichts sicher. Da kann alles mögliche zeitweise passieren - nicht nur bei dieser API. Ob der möglicherweise noch drin ist, kann ich durch eine Rückmeldung von Jonathan erfahren. Es hängt davon ab, welchen Code der ausgeführt hat, als er mir vor einigen Tagen zurückgeschrieben hat, das der Code noch Fehler produziert.
Produziert dieser Code in X2 noch Feher -> https://www.paules-pc-forum.de/forum/speziell…html#post977238
liegt auf jeden Fall noch ein Problem mit der Sprache vor. Wenn er Fehler produziert, tut er das auf jeden Fall nur selten, vielleicht nur in der EXE oder nur imm Interpreter und auch nicht auf jedem Gerät und jedes Mal. Im eigenen Interesse wurde ich also den Quellcode testen und Rückmeldung geben, ob der jedes Mal läuft oder nicht.Zitat
Kann man erkennen, daß ein Fehler vorliegt?Ob der Fehler passiert, kann man im Code nicht erkennen.
Einen Workarround hätte ich bereits.Was mir in Bezug auf X2 noch etwas Bauchschmerzen macht, ist die Rückmeldung von Jonathan. Klärt sich das noch auf, ist mit Sicherheit nur die Freeware 9.1 betroffen (und ältere Versionen). Ich will das unbedingt noch klären, auch wenn ich X2 gar nicht nutze.
Ich vergeude hier also im Prinzip Zeit für andere. -
Bei der NTQueryDirectoryFile_Fehler.exe
bleibt die Listbox manchmal leer.
Ich kann den Fehler nicht sicher reproduzieren,
ein Muster lässt sich nicht ausmachen.
Windows Version : Windows 7 Home Premium 64 BitGruß,
Tunarus -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!