| Hi all 
 This is my first ever project in BlitzPlus, and to start with i decided to write a notepad clone, everything was going fine until i added the Copy and Paste commands to the edit menu, now the program seems to crash/freeze at random times and giving no error messages, can anybody see what i've done wrong?
 
 
 
; userlibs
; *********************************************
; .lib "user32.dll"
; OpenClipboard%(hwnd%):"OpenClipboard"
; CloseClipboard%():"CloseClipboard"
; ExamineClipboard%(format%):"IsClipboardFormatAvailable"
; EmptyClipboard%():"EmptyClipboard"
; GetClipboardData$(format%):"GetClipboardData"
; SetClipboardData%(format%,txt$):"SetClipboardData"
; *********************************************
Global CurrentFileName$
Global CurrentFont
; ---------------------------------------------------------------------------------------------------
; BUILD WINDOW
; create application window
Global AppWin = CenterWindow("Text Editor",640,480)
; create menu
menu = WindowMenu(AppWin)
FileMenu = CreateMenu("File",0,menu)
	CreateMenu("New",1,FileMenu)
	CreateMenu("Open...",2,FileMenu)
	CreateMenu("Save",3,FileMenu)
	CreateMenu("Save As...",4,FileMenu)
	CreateMenu("",0,FileMenu)
	CreateMenu("Exit",5,FileMenu)
EditMenu = CreateMenu("Edit",0,menu)
	CreateMenu("Cut",20,EditMenu)
	CreateMenu("Copy",21,EditMenu)
	CreateMenu("Paste",22,EditMenu)
	CreateMenu("Delete",23,EditMenu)
FormatMenu = CreateMenu("Format",0,menu)
	Global WordWrap = CreateMenu("Word Wrap",40,FormatMenu)
	CreateMenu("Font...",41,FormatMenu)
UpdateWindowMenu AppWin
; create text area
Global TextArea = CreateTextArea(0,0,ClientWidth(AppWin),ClientHeight(AppWin),AppWin)
SetTextAreaColor TextArea,255,255,255,False
SetTextAreaColor TextArea,0,50,90,True
SetGadgetLayout TextArea,1,1,1,1 
; ---------------------------------------------------------------------------------------------------
; MAIN LOOP
Repeat
	Event = WaitEvent()
	
	Select Event
	
		Case $803
			Exit
		Case $1001
			EID = EventData()
			Select EID
				Case 1	; New
					SetTextAreaText TextArea,""
					CurrentFilename$ = ""
					SetStatusText(AppWin,CurrentFileName$)
				
				Case 2	; Open
					FileName$ = RequestFile("Open a text file","txt,log,ini")
					OpenTextFile(FileName$)
				Case 3	; Save
					If CurrentFilename$ <> ""
						SaveTextFile(CurrentFileName$)
					Else
						FileName$ = RequestFile("Save text file as","txt,log,ini",True)
						SaveTextFile(FileName$)
					EndIf						
				Case 4	; Save As
					FileName$ = RequestFile("Save text file as","txt,log,ini",True)
					SaveTextFile(FileName$)
				Case 5	; Exit
					If Confirm("do you really want to exit?") End
				Case 20	; Cut
					pos = TextAreaCursor(TextArea)
					length = TextAreaSelLen(TextArea)
					WriteClipboardText(TextAreaText(TextArea,pos,length))
					SetTextAreaText TextArea,"",pos,length
				Case 21	; Copy
					pos = TextAreaCursor(TextArea)
					length = TextAreaSelLen(TextArea)
					WriteClipboardText(TextAreaText(TextArea,pos,length))
				Case 22	; Paste
					pos = TextAreaCursor(TextArea)
					SetTextAreaText TextArea,ReadClipboardText$(),pos,0
				Case 23	; Delete
					pos = TextAreaCursor(TextArea)
					length = TextAreaSelLen(TextArea)
					SetTextAreaText TextArea,"",pos,length
				Case 40	; Word Wrap
					If MenuChecked(WordWrap)
						UncheckMenu WordWrap
						Style = 0
					Else
						CheckMenu WordWrap
						Style = 1
					EndIf
					UpdateWindowMenu AppWin
					CurrentText$ = TextAreaText(TextArea)
					FreeGadget TextArea
					TextArea = CreateTextArea(0,0,ClientWidth(AppWin),ClientHeight(AppWin),AppWin,style)
					SetTextAreaFont TextArea,CurrentFont
					SetTextAreaColor TextArea,255,255,255,False
					SetTextAreaColor TextArea,0,50,90,True
					SetGadgetLayout TextArea,1,1,1,1 
					SetTextAreaText TextArea,CurrentText$
					CurrentText$ = ""
					
				Case 41	; Font
					SelectedFont = RequestFont()
					If SelectedFont
						CurrentFont = SelectedFont
						SetTextAreaFont TextArea,CurrentFont
						SetTextAreaColor TextArea,255,255,255
					EndIf
												
			End Select
	End Select
Forever
End
; ---------------------------------------------------------------------------------------------------
; OPEN TEXT FILE
Function OpenTextFile(Filename$)
	If FileType(FileName$) <> 1 Then Return
	File = ReadFile(Filename$)	
	LockTextArea TextArea
	Repeat
		If lineno=0 
			Line$ = ReadLine(File)
		Else
			Line$ = Line$ + Chr$(13) + ReadLine(File)
		EndIf
		lineno = lineno + 1
	Until Eof(File)
	SetTextAreaText TextArea,Line$
	CloseFile File
	UnlockTextArea TextArea
	CurrentFilename$ = Filename$
	SetStatusText(AppWin,CurrentFileName$)
 
End Function
; ---------------------------------------------------------------------------------------------------
; SAVE TEXT FILE
Function SaveTextFile(Filename$)
	File = WriteFile(Filename$)	
	For n=0 To TextAreaLen(TextArea,2)-1
		WriteLine File,TextAreaText(TextArea,n,1,2)
	Next
	CloseFile File
	CurrentFilename$ = Filename$
	SetStatusText(AppWin,CurrentFileName$)
End Function
; ---------------------------------------------------------------------------------------------------
; CREATE A CENTERD WINDOW
Function CenterWindow(Title$,Width,Height,Group=0,Style=15)
	x = ( GadgetWidth(Desktop()) - Width ) / 2
	y = ( GadgetHeight(Desktop()) - Height ) / 2
	Return CreateWindow(Title$,x,y,width,height,Group,Style)
End Function
;-----------------------------------
Function WriteClipboardText(txt$)
	Local cb_TEXT=1
	If txt$="" Then Return 
	OpenClipboard 0
	EmptyClipboard
	SetClipboardData cb_TEXT,txt$
	CloseClipboard
End Function
;-----------------------------------
Function ReadClipboardText$()
	Local cb_TEXT=1
	Local txt$=""
	OpenClipboard 0
	If ExamineClipboard(cb_TEXT) 
		txt$=GetClipboardData$(cb_TEXT)
	EndIf
	CloseClipboard
	Return txt$
End Function
 
 |