![]() |
Anzeige:
|
|
|||||||
| Anregungen & Bugreports Für Vorschläge an den Autor Roland und neue XProfan-Versionen |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
War schon mal da
Registriert seit: 21.10.2011
Beiträge: 32
|
Hallo an Alle!
Ich habe nun endlich mein X2 bei JDS bestellt und erhalten und installiert. Bisher habe ich mit der Free-Version 11 gearbeitet. Beim Versuch, Dateien aus Verzeichnissen einzulesen, gab es unter X2 die folgende Fehlermeldung (siehe Anlage). Dabei habe ich den im Forum veröffentlichen Quellcode verwendet, der Windows Routinen aufruft. Unter dem 11er Interpreter ist alles OK. Unter der X2 jedoch nicht - was muss ich unter X2 andes machen??? Betriebssystem: Windows 7 - 64 Bit Vielen Dank im Voraus: Matthias
|
|
|
|
|
|
|
#2 (Direktlink) |
|
War schon mal da
Registriert seit: 21.10.2011
Beiträge: 32
|
|
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Welchen Code fürst du denn genau aus?
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#4 (Direktlink) |
|
Stammuser
![]() Registriert seit: 21.04.2011
Ort: Hessen
Alter: 15
Beiträge: 327
|
Ich sehe gerade, in deinem Quellcode sind dynamische Arrays. In XProfan X2 hat sich ein kleiner Bug eingeschlichen, durch den sowas hier nicht mehr funktioniert:
Code:
Input DynamischesArray$[Nummer] Input #Dateinummer, DynamischesArray$[Nummer] Gruß Jonathan
__________________
ASUS K50IJ Notebook --- Pentium T4500 2x 2,4GHz --- 4GB RAM --- 64GB m4 SSD --- Win 7 Home Premium 32-Bit --- XProfan X2.0b Das Schönste am Programmieren ist immernoch die Fehlersuche Dieser Beitrag besteht zu 100% aus Recycling-Bytes.
|
|
|
|
|
|
#5 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
|
Ein lauffähiges Codebeispiel wäre hilfreicher als die Fehlermeldung. Da kann ich nur vermuten, daß möglicherweise eine Stringvariable leer ist und dort ein Inhalt erwartet wird oder ein Bereich, der das Ergebnis aufnehmen soll falsch declariert ist. Kann aber auch was Anderes sein.
Und hat sicherlich auch nicht unbedingt mit den Patch zu tun? Gruß Volkmar |
|
|
|
|
|
|
#6 (Direktlink) |
|
War schon mal da
Registriert seit: 21.10.2011
Beiträge: 32
|
@AHT
Ja, welchen? Am besten, ich stelle ihn hier mal ein. Wie gesagt das Original stammt aus dem Forum, ich habe ihn nur leicht modifiziert. Lief aber prima unter der Free 11er. Ich nehme an, dass es irgendwie an der Deklaration der Routinen im Kernel32 liegt. Aber warum reagiert X2 anders als die Free 11er? Erst mal vielen Dank für die schnelle Reaktion: Matthias ' Vorgabe rekrusives Einlesen von Dateien ' +++++++++++++++++++++++++++++++++++++++ ' Abwandlung wie folgt: ' 1. Parameter sind Startpfad, Filter (gesuchtr Dateityp), Ausgabearray ' Def FindFirstFile(2) !"kernel32","FindFirstFileA" Def FindNextFile(2) !"kernel32","FindNextFileA" Def FindClose(1) !"kernel32","FindClose" Def $Maske "*" Struct WIN32_FIND_DATA= \ dwFileAttributes&, \ ftCreationTime#(8), \ ftLastAccessTime#(8), \ ftLastWriteTime#(8), \ nFileSizeHigh&, \ nFileSizeLow&, \ dwReserved0&, \ dwReserved1&, \ cFileName#(260), \ cAlternate#(14) Declare HandleA&[] Declare HandleA$[] Declare FH& Declare FindData# Declare PM$ Dim FindData#, Win32_Find_Data Proc DirListFiles Parameters pPfad$, pFilter$, pListArray$[], pPos& declare iFilter$ iFilter$ = upper$(pFilter$) PM$ = pPfad$ + "\\" + $Maske FH& = FindFirstFile(Addr(PM$),FindData#) While (pPos& >= 1) And (FH& >= 0) = 1 Repeat If (@String$(FindData#,44) <> ".") And (@String$(FindData#,44) <> "..") ' Wenn ein Verzeichnis If (FindData#.dwFileAttributes& & $10) = $10 HandleA&[pPos&] = FH& HandleA$[pPos&] = pPfad$ pPfad$ = pPfad$ + "\\" + @String$(FindData#,44) Inc pPos& DirListFiles(pPfad$, pFilter$, pListArray$[], pPos&) Else ' Wenn eine Datei, dann Filtern bestimmter Dateien if (right$(upper$(@String$(FindData#,44)), len(pFilter$)) = iFilter$) OR (pFilter$ = "") setsize pListArray$[], sizeof(pListArray$[]) +1 pListArray$[sizeof(pListArray$[])-1] = pPfad$ + "\\" + @String$(FindData#,44) endif EndIf EndIf Until FindNextFile(FH&,FindData#) = 0 Dec pPos& If pPos& >= 1 FH& = HandleA&[pPos&] pPfad$ = HandleA$[pPos&] Case FindNextFile(FH&,FindData#) = 0 : Break Else Break EndIf EndWhile EndProc |
|
|
|
|
|
#7 (Direktlink) |
|
War schon mal da
Registriert seit: 21.10.2011
Beiträge: 32
|
Hallöle!
Also das mit dem X2 Bug kann auch sein. Ich werde das Problem am besten mal einkreisen, indem ich meinen Quellcode zerlege und mal einzeln einem Test unterziehe. Dazu werde ich mich dann morgen mal melden. Ist auf alle Fälle eine Idee, den Fehler auch in diesem Fall woanders zu suchen. Dachte nur, es liegt an der Win32/Win64 Geschichte. Also, bis morgen abend erst mal, denn mein Tag fängt sehr früh an. PS: Ich habe auch einen Kumpel für XFrofan begeistern können. Er ist auch mit der Forumhilfe sehr zufrieden. Grüße aus dem kalten Harz: Matthias alias Transrapidfan (der Ungeduldige) |
|
|
|
|
|
#8 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
|
Das Beispiel war zwar noch nicht lauffähig, die Prozedur wird ja nie aufgerufen und der 4. Parameter ist auch nicht dokumentiert. Aber wenn ich den Code mal so ergänze, dann kommt das raus, vom dem ich denke, was der Code machen soll, eine rekursive Auflistung aller Dateien eines Typs ab dem angegebenen Ordner.
Code:
Declare Ergebnis$[], _zeile$, _Zahl& DirListFiles "C:\\Program Files\\Adressen", "bmp", Ergebnis$[], 1 _Zahl& = sizeof(Ergebnis$[]) WhileLoop _Zahl& Print Ergebnis$[&Loop-1] EndWhile Print _Zahl& WaitInput Gruß Volkmar |
|
|
|
|
|
#9 (Direktlink) |
|
War schon mal da
Registriert seit: 21.10.2011
Beiträge: 32
|
@Volkmar!
Hallo Volkmar! Bin nochmal ins Forum rein geschlickert.... (ist ja glatt draußen) Ja, Deine Vermutung ist richtig. Rekrusives Einlesen von Dateinamen. (Ich möchte alle Textdateien ab einem Startpfad bearbeiten) Das die Verarbeitung der Ergebnisse scheitert, könnte eine Ursache sein. Vielleicht wieder die Sache mit den dynamischen Arrays. Dann liege ich vielleicht damit falsch, dass es die Rotinenaufrufe sind. Das werde ich dann morgen gleich mal testen, denn ich möchte ab sofort nur noch mit meiner X2 arbeiten, um EXE damit zu erzeugen. Wenn ich mein kleines Tool fertig habe, stelle ich es mal ins Forum. Vielleicht hat ja der eine oder andere auch EEP6? @Alle: Transrapidfan Matthias dankt allen Helfern! Bis morgen! |
|
|
|
|
|
#10 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.091
|
Das mit dem ersten Bild passte schon, Matthias. Kann man auf Originalgröße klicken.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#11 (Direktlink) |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Probier mal diesen Code aus, der wesentlich schneller !
Ist nur ein Test, also kein Abbrechen möglich usw. Bei mir dauert das Einlesen von über 1800 Dateien ca. 1 Sekunde. Code:
'##############################################
'# Autor : ampsoft (Andreas Miethe) #
'# Datum : 05.03.2011 #
'# Thema : Rekursive Dateisuche #
'# XProfan-Version : X2 #
'##############################################
$H windows.ph
$H messages.ph
Var Dll& = Importdll("DbgHelp.dll","")
clearlist
If ~GetProcAddress(Dll&,"EnumDirTree")
Declare Ende&
Windowstyle 536
WINDOW %maxx,%maxy
~SetClassLong(%hwnd,~GCL_STYLE,(~getClassLong(%hwnd,~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
CLS ~GetSysColor(~Color_BTNFACE)
WindowTitle "Rekursive Dateisuche"
SetDialogFont ~GetStockObject(~DEFAULT_GUI_FONT)
Var Text& = Create("TEXT",%hwnd,"",0,0,width(%hwnd),24)
Var Gefunden& = Create("TEXT",%hwnd,"",0,28,width(%hwnd),24)
Var Liste& = Create("Listbox",%hwnd,0,0,100,width(%hwnd),height(%hwnd)-100)
Var Anzahl& = 0
Var hProcess& = ~GetCurrentProcess()
Var Buffer$ = space$(100)
Var Time& = ~GetTickCount()
'Initialisieren
'############################################################################
SymInitialize(hProcess&,0,0)
'Redraw der Listbox abschalten
'############################################################################
SendMessage(Liste&,~WM_SETREDRAW,0,0)
Repaint
'Dateien suchen
'Processhandle&,Suchpfad$,Dateiname$,BufferPointer&,ProzedurAdresse&,Userdata&
'############################################################################
Settext Text&,"Warten bitte...."
'Hier den Suchpfad angeben
'############################################################################
EnumDirTree(hProcess&,"D:\\","*.txt",0,ProcAddr("EnumDirTreeProc",2),Liste&)
'############################################################################
SendMessage(Liste&,~WM_SETREDRAW,1,0)
Repaint
'Aufräumen
'############################################################################
SymCleanup(hProcess&)
Else
MessageBox("Keine Unterstützung gefunden","Fehler",0)
End
EndIf
External("shlwapi.dll","StrFromTimeIntervalA",Addr(Buffer$),100, Int(~GetTickCount() - Time&),12)
Settext Text&,Buffer$
Settext Gefunden&,"Suche beendet : " + Str$(Anzahl&) + " Dateien gefunden die dem Suchkriterium entsprechen"
Waitinput
End
Proc EnumDirTreeProc
PARAMETERS PPath&,CData&
Var Path$ = String$(PPath&,0)
AddString(Liste&,Path$)
SetText Text&,Path$
Inc Anzahl&
Return 0
EndProc
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Läuft leider nicht auf allen Systemen - sicher wohl erst ab Vista.
Trotzdem tolle Methode! Deine Lösung in XProfan braucht mit dem Code 23 Sekunden bei mir für Laufwerk C:. Leider zum Einbau in "richtige Programme" keine Lösung.
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#13 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 721
|
Naja, unter Win9x ist die Imagehlp.dll zu importieren, dann sollte es auch mit
dem Nachbarn klappen
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#14 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Für den Nachbarn kein Problem - will man das aber über das Internet verteilen, wird es problematisch. Die DLL braucht man ab Version 6.0, und das ist Vista.
Wie gesagt - wenn ein Programm nicht zwingend überall laufen muss, kann man das verwenden, ansonsten besser nicht.
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#15 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 721
|
Hab mich sowieso geiirt
Funktion "EnumDirTree" nicht, insofern ab Vista
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| bei neuinstallalation winxp: unknown hard error \systemroot\system32\ntdll.dll | gada1 | Hardware - Problemlösungen | 3 | 12.01.2009 09:57 |
| c0000221 Unknown Hard Error (NTDLL.DLL) | e-cyborg | Windows XP | 3 | 25.08.2006 10:34 |
| Windows 98 startet nach Windows-Fehler nicht mehr - H E L P | anancus | Windows 95/98/ME/2000/NT | 2 | 12.09.2004 15:08 |
| probleme mit ntdll.dll und uxtheme.dll | myhere | Windows 95/98/ME/2000/NT | 3 | 20.05.2004 22:10 |
| Windows XP Pro ! Fehler | Batchman | Windows XP | 3 | 20.12.2003 20:43 |