Bin beim schreiben eines Betrachters für Retro-Computer Bilddateien auf folgendes Problem gestoßen: Wenn Explorerlistgadget sehr viele Filteroperationen aufweist (wie in dem Beispiel unten ca. 70), dann wirft der Debugger ein Invalid Memory Access aus. Das gilt für alle bisherigen PB Versionen inklusive 4.20 Beta 2. Mein Problem ist aber dass noch wesentlich mehr Erweiterungen zu der Liste hinzukommen werden.
Code: Alles auswählen
filterRX$ ="*.rxa;*.rxs"
filterZX$ = "*.scr;*.mlt;*.ifl;*.lce;*.sna;*.lcm;*.blk; *.blc;*.$c;*.afl;*.atr;*.chk;*.asc;*.rgb;*.cdi;*.mtl; *.gsc;*.img;*.mc;*.mcx;*.zed;*.4bpp;*.posc"
filterSAM$="*.ss1;*.ss2;*.ss3;*.ss4;*.sl4"
filterC64$="*.gcd;*.mon;*.dd;*.hed;*.hfc;*.him;*.art; *.hir;*.iph;*.eci;*.ibm;*.ish;*.fgs;*.gig;*.koa;*.rp; *.pi;*.cdu;*.rpm;*.sar;*.vid;*.cwg;*.ami;*.mil;*.fpt; *.ocp;*.ipt;*.dol;*.jj"
filterCPC$="*.cpc"
filterQL$ ="*.qs8;*.qs4"
filterXL$ ="*.pic;*.mic"
filterMSX$="*.pic;*.grp;*.sc2;*.sr2;*.sr5;*.sr7;*.sr8"
filterall$= filterRX$+"; "+filterZX$+"; "+filterSAM$+"; "+filterC64$+"; "+filterQL$+"; "+filterCPC$+"; "+filterXL$+"; "+filterMSX$
window=OpenWindow(#PB_Any,0,0,700,600,"Retro Picture viewer",#PB_Window_SystemMenu| #PB_Window_MinimizeGadget|#PB_Window_TitleBar)
If Not CreateGadgetList(WindowID(window)) Or Not window:MessageRequester("Error","Window can't be opened",#MB_ICONERROR):End:EndIf
filelist=ExplorerListGadget(#PB_Any, 0,30,694,526,"C:\"+filterall$, #PB_Explorer_MultiSelect| #PB_Explorer_AlwaysShowSelection| #PB_Explorer_GridLines| #PB_Explorer_HeaderDragDrop| #PB_Explorer_FullRowSelect|#PB_Explorer_NoFolders| #PB_Explorer_NoParentFolder| #PB_Explorer_NoDriveRequester| #PB_Explorer_AutoSort)
close=0
Repeat
wwe=WaitWindowEvent()
If wwe=#PB_Event_CloseWindow And GetActiveWindow()=window:close=1:EndIf
Until close
Es gibt weitere Probleme bei compilierten Programmen die sehr groß sind (Exe mit ca. 2.2 Mb) weil bei meinem Programm compilieren mit PB 4.10 und 4.20 Beta 2, und eingeschalteten Debuger den Compiler abstürzen lässt (Ohne Debuger wird normal compiliert) oder das verschieben eines Splitters ausserhalb des Fensters einen Programmabsturz verursacht, da aber der Source viel zu groß ist um ihn hier zu posten, werde ich es am besten gleich direkt an Fred mailen.
Und noch ein kleiner Fehler in der Help Datei: Bin zwar kein Experte, aber IMHO sollte man bei der Beschreibung von FakeReturn alle GoTo durch GoSub ersetzen...