Alain...your code I am afraid does the same thing....dings the way my windows look with the panel/3dtxt when the built program is restarted the second time. Also this part of your suggesting will give an error message at about MyLoop hitting around 1835...long way from the 15000+. FOR MyLoop = 1 TO itemnumber% DIAGNOSIS$(Myloop) = theStr$(MyLoop-1) LONG IF FN PTRANDHAND(@DIAGNOSIS$(Myloop),resHndl&,48) = _noErr resHndl&..nil%++ XELSE EXIT FOR END IF NEXT I still think it is something going wrong with inserting the STR# stuff. If I REM out these two lines (FN repElement and FN pGreplaceRes)...it does not ding, of course I do not have the necessary STR# stuff. LONG IF itemnumber$<>MODIFIED$ resHndl& = FN NEWHANDLE _clear(2) FN HNOPURGE(resHndl&):gOffSet&=0 itemnumber%=LOF(FILENUMBER,48):Filesize&=LOF(FILENUMBER,1) StrHndl&=FN NEWHANDLE(Filesize&+5) FN HNOPURGE(StrHndl&) READ FILE#FILENUMBER,[StrHndl&],Filesize& FOR Myloop=1 TO itemnumber% POKE @DIAGNOSIS$(Myloop),48'Set length byte BLOCKMOVE [StrHndl&]+gOffSet&,@DIAGNOSIS$(Myloop)+1,48'move string gOffSet& = gOffSet& + 48'get offset of next string DEF APNDSTR(DIAGNOSIS$(Myloop),resHndl&) NEXT FN repElement(2,_filedataSTR,itemnumber$) FN pGreplaceRes(resHndl&,_"STR#",_diagnosislistSTR,"DIAGNOSISLIST") FN HPURGE(resHndl&) FN HPURGE(StrHndl&) gSaveTks&=1 END IF Terrald J. Smith