I posted this in the "Coding Questions" Forum ,
but got no answers , so Thought I would try it here:
I am having a Problem with OpenFileRequester & SaveFileRequester :
Problems when compiling Test-Occurences.pb :
When I open this file "Test-Occurences-01.pb"
from this folder ...\BUTTONS\Strip-Html-Elements
into PB compiler , all appears well .
And when I click on Open Folder all is well .
But when I compile a program from same Folder ,
all is well , until I open OpenFileRequester & SaveFileRequester .
The *Requester opens up in the
"C:\Users\vmars\Desktop\Downloads" Folder .
And then the the TaskManager show a "not responding" message .
I have been working with this same program & Folder many times ,
including today , with no probs .
But all of a sudden this started to happen .
I tried a system Restart , but it made no difference .
I tried to open the "Set Defut Target" Compiler option .
But it doesn't work .
When I compiled an executable , things work fine .
Also , MessageRequester("" , "CurrentDIR$ = " + CurrentDIR$ )
shows the correct folder .
Here are my two *FileRequester Codes :
Code: Select all
Code:
Procedure OpenInputFile() ; |All files (*.*)|*.*
MessageRequester(" " , " OpenInputFile() " )
MessageRequester("" , "CurrentDIR$ = " + CurrentDIR$ )
ClearGadgetItems(EditArea)
InputFileIsOpen = InputFileIsOpen + 1
If InputFileIsOpen > 1 : CloseFile(2) : InputFileIsOpen = 0
EndIf
StandardFile$ = "*.html" ; set initial file+path to display
Pattern$ = "Html (*.html)|*.html;*.html|Text (*.txt)|*.txt"
Pattern = 0 ; use the first of the three possible patterns as standard
OpenThisFilename$ = OpenFileRequester("Please choose file to load", StandardFile$, Pattern$, Pattern)
If OpenThisFilename$
MessageRequester("Information", "You have selected following file:" + Chr(10) + OpenThisFilename$, 0)
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIf
ReadFile(2, OpenThisFilename$)
Repeat
CheckThisLine()
Until Eof(2)
EndProcedure ; OpenInputFile()
Code: Select all
Code:
Procedure SaveAsHtml()
MessageRequester("" , "SaveAsHtmlBtn")
StandardFile$ = "Extracted-File.html" ; set initial file+path to display
Pattern$ = "Html (*.html)|*.html;*.txt|Text (*.txt)|*.txt|All files (*.*)|*.*"
Pattern = 0 ; use the first of the three possible patterns as standard
OutputFileName$ = SaveFileRequester("Please choose file to save", StandardFile$, Pattern$, Pattern)
If OutputFileName$
MessageRequester("Information", "You have selected following file:"+Chr(10) + OutputFileName$ , 0 )
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIf
If OutputFileName$ = ""
MessageRequester("OutputFileName$ = " , "Can't SAVE FILE Until You Enter A FileName .")
Goto SaveAsHtmlExit
EndIf
EditorAreaItemsCOUNT = CountGadgetItems(EditorArea) + 1
MessageRequester("EditorArea = " , "EditorAreaItemsCOUNT = " + Str(EditorAreaItemsCOUNT) )
If EditorAreaItemsCOUNT < 1
MessageRequester("EditorArea = " , "Nothing To SAVE In EditorArea ?")
Goto SaveAsHtmlExit
EndIf
EditorAreaItemsCOUNT2 = 0
EditorAreaItemsCOUNT = CountGadgetItems(EditorArea)
If CreateFile(1, OutputFileName$) ; If file can be created...
For k = 0 To EditorAreaItemsCOUNT - 1
WriteStringN(1, GetGadgetItemText(EditorArea, k ) )
Next
CloseFile(1)
Else
MessageRequester("OpenFile(1, ", "Can't Open File Listings.txt")
EndIf
SaveAsHtmlExit:
EndProcedure ; SaveAsHtmlBtn()
Here is the complete program code (201 lines) .
Code: Select all
; https://www.purebasic.fr/english/
;TODO Vertical Scroll for EditArea , check if Valeria's deposit cast me $18.xx
;
Global HtmlLineIn$ = "<h5>Hello-5 </h5> <p>This is Elm 1</p> <p>This is Elm 2</p> <h6>Hello-6<>" + Chr(10) + Chr(13) +
"<h5>Hello-5 </h5> <p>This is Elm 1</p> <p>This is Elm 2</p> <h6>Hello-6<>"
Global StartingHtmlElement$ = "<p" , EndingHtmlElement$ = "</p>"
Global LEN_StartingHtmlElement = Len(StartingHtmlElement$) , LEN_EndingHtmlElement = Len(EndingHtmlElement$)
Global Starting_HitsCount , Ending_HitsCount , OutputLines$
Global OpenWindow_0 , EditorArea , EditorAreaItemsCOUNT , StartTagStr , EndTagStr , ExtractBtn ,
SaveAsHtmlBtn , ExitBtn , HelpBtn , OpenInputBtn ,
OpenThisFilename$ , EndOfProgram$ = "no" , InputFileIsOpen = 0 ,Result = 0 ,
OutputFileName$ , OutputFileIsOpen = 0 , CurrentDIR$ = GetCurrentDirectory()
;
Declare CheckThisLine()
Declare FindStrings()
Declare Occurrences(source$,string$,_Case)
Declare OpenInputFile()
Declare OpenWindow_0(x = 0, y = 0, width = 600, height = 575)
Declare SaveAsHtml()
;
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 575)
Window_0 = OpenWindow(#PB_Any, x, y, 600, 575, "Collect Html by TAG", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget| #PB_Window_TitleBar | #PB_Window_SizeGadget | #PB_Window_ScreenCentered )
FirstContainer = ContainerGadget(#PB_Any, 10, 6, 580, 50, #PB_Container_Single )
StartTagStr = StringGadget(#PB_Any, 16, 10, 60, 25, "<p")
GadgetToolTip(StartTagStr, "Enter START TAG <p gets better results than <p>")
SetGadgetColor(StartTagStr, #PB_Gadget_FrontColor,RGB(64,0,64))
EndTagStr = StringGadget(#PB_Any, 89, 10, 60, 25, "</p>")
GadgetToolTip(EndTagStr, "Enter Full End Tag , like this </p> .")
SetGadgetColor(EndTagStr, #PB_Gadget_FrontColor,RGB(0,0,0))
SetGadgetColor(EndTagStr, #PB_Gadget_BackColor,RGB(255,255,255))
ExtractBtn = ButtonGadget(#PB_Any, 200, 10, 80, 25, "Extract")
SaveAsHtmlBtn = ButtonGadget(#PB_Any, 300, 10, 86, 25, "Save As Html")
GadgetToolTip(SaveAsHtmlBtn, "Ok , It's Looking Good , Lets Save It Now !")
ExitBtn = ButtonGadget(#PB_Any, 436, 10, 80, 25, "Exit")
HelpBtn = ButtonGadget(#PB_Any, 526, 10, 40, 25, "?")
CloseGadgetList()
EditorArea = EditorGadget(#PB_Any, 10, 80, 580, 475, #ES_MULTILINE|#ES_AUTOVSCROLL|#WS_VSCROLL|#WS_HSCROLL )
GadgetToolTip(EditorArea, "This Is Where We Build The Html Page")
EndProcedure ; OpenWindow_0
;
Procedure OpenInputFile() ; |All files (*.*)|*.*
MessageRequester(" " , " OpenInputFile() " )
MessageRequester("" , "CurrentDIR$ = " + CurrentDIR$ )
ClearGadgetItems(EditArea)
InputFileIsOpen = InputFileIsOpen + 1
If InputFileIsOpen > 1 : CloseFile(2) : InputFileIsOpen = 0
EndIf
StandardFile$ = "*.html" ; set initial file+path to display
Pattern$ = "Html (*.html)|*.html;*.html|Text (*.txt)|*.txt"
Pattern = 0 ; use the first of the three possible patterns as standard
OpenThisFilename$ = OpenFileRequester("Please choose file to load", StandardFile$, Pattern$, Pattern)
If OpenThisFilename$
MessageRequester("Information", "You have selected following file:" + Chr(10) + OpenThisFilename$, 0)
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIf
ReadFile(2, OpenThisFilename$)
Repeat
CheckThisLine()
Until Eof(2)
EndProcedure ; OpenInputFile()
;
Procedure Occurrences(source$,string$,_Case)
; MessageRequester("" , "Occurrences() " + "source$ = " + source$ + Chr(10) + Chr(13) +
; "string$ = " + string$ )
pos = 1
Repeat
If _Case=0
f=FindString(LCase(source$),LCase(string$),pos)
Else
f=FindString(source$,string$,pos)
EndIf
If f<>0 : r=r+1 : pos=f+Len(string$) : EndIf
Until f=0
ProcedureReturn r
EndProcedure ; Occurrences()
;
Procedure CheckThisLine() ; HtmlLineIn$ = ReadString(2 )
; MessageRequester(" " , " CheckThisLine() " + " = ReadString(2 )" )
StartingHtmlElement$ = GetGadgetText (StartTagStr)
EndingHtmlElement$ = GetGadgetText (EndTagStr)
HtmlLineIn$ = ReadString(2 )
; MessageRequester("" , "CheckThisLine() " + "StartingHtmlElement$ = " + StartingHtmlElement$ )
Starting_HitsCount = Occurrences(HtmlLineIn$ , StartingHtmlElement$ , 0) ; Case-sense off.
Ending_HitsCount = Occurrences(HtmlLineIn$ , EndingHtmlElement$ , 0) ; Case-sense off.
If Starting_HitsCount = 0 And Ending_HitsCount = 0 : Goto NoHitsExitThisLine : EndIf
If Starting_HitsCount <> Ending_HitsCount
MessageRequester("" , "Nmber Of Starting and Ending TAG HitCounts are UN-equal may give bizarre resulte" +
Chr(10) + Chr(13) + Str( Starting_HitsCount) + " " + Str(Ending_HitsCount) )
Goto EofExitCheckThisLine
EndIf
If Starting_HitsCount = 0 And Ending_HitsCount = 0
MessageRequester(" " , " Starting_HitsCount = 0 And Ending_HitsCount = 0 ")
Goto NoHitsExitThisLine
EndIf
; MessageRequester("" , "Got A Hit People" +
; Chr(10) + Chr(13) + "Starting_HitsCount) = " + Str( Starting_HitsCount) + Chr(10) + Chr(13) +
; "Ending_HitsCount = " + Str(Ending_HitsCount) )
FindStrings()
MessageRequester("" , "Finished With This Line !" )
Goto EofExitCheckThisLine
NoHitsExitThisLine:
; Starting_HitsCount = Occurrences(HtmlLineIn$ , StartingHtmlElement$ , 0) ; Case-sense off.
; Ending_HitsCount = Occurrences(HtmlLineIn$ , EndingHtmlElement$ , 0) ; Case-sense off.
EofExitCheckThisLine:
;
EndProcedure ; CheckThisLine()
;
Procedure FindStrings()
; MessageRequester("" , "FindStrings()" ) ; MessageRequester(" " , " " )
NextStartElmPOS = 1
For k = 0 To Starting_HitsCount - 1
FirstElemStartPOS = FindString(HtmlLineIn$ , StartingHtmlElement$ , NextStartElmPOS)
;MessageRequester("" , "NextStartElmPOS = " + Str(NextStartElmPOS) )
FirstElemEndPOS = FirstElemStartPOS + LEN_StartingHtmlElement
;
;MessageRequester("" , "FirstElemStartPOS = " + Str(FirstElemStartPOS) + Chr(10) + Chr(13) +
; "FirstElemEndPOS = " + Str(FirstElemEndPOS) + Chr(10) + Chr(13) +
; "LEN_StartingHtmlElement = " + Str(LEN_StartingHtmlElement) )
;
LastElemStartPOS = FindString(HtmlLineIn$ , EndingHtmlElement$ , FirstElemEndPOS )
LastElmEndPOS = LastElemStartPOS + LEN_EndingHtmlElement
;
;MessageRequester("" , "LastElemStartPOS = " + Str(LastElemStartPOS) + Chr(10) + Chr(13) +
; "LastElemEndPOS = " + Str(LastElmEndPOS) + Chr(10) + Chr(13) +
; "LEN_EndingHtmlElement = " + Str(LEN_EndingHtmlElement) )
;
ElmLength = LastElmEndPOS - FirstElemStartPOS
OutputLine$ = Mid(HtmlLineIn$, FirstElemStartPOS , ElmLength )
; MessageRequester("Elm POSitions" , "HtmlLineIn$ = " + Chr(10) + Chr(13) + HtmlLineIn$ + Chr(10) + Chr(13) +
; "OutputLine$ = " + Chr(10) + Chr(13) +
; OutputLine$ )
AddGadgetItem(EditorArea ,-1 , OutputLine$)
NextStartElmPOS = LastElmEndPOS
Next
ExitFindStrings:
EndProcedure ; FindStrings ()
;
Procedure SaveAsHtml()
MessageRequester("" , "SaveAsHtmlBtn")
StandardFile$ = "Extracted-File.html" ; set initial file+path to display
Pattern$ = "Html (*.html)|*.html;*.txt|Text (*.txt)|*.txt|All files (*.*)|*.*"
Pattern = 0 ; use the first of the three possible patterns as standard
OutputFileName$ = SaveFileRequester("Please choose file to save", StandardFile$, Pattern$, Pattern)
If OutputFileName$
MessageRequester("Information", "You have selected following file:"+Chr(10) + OutputFileName$ , 0 )
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIf
If OutputFileName$ = ""
MessageRequester("OutputFileName$ = " , "Can't SAVE FILE Until You Enter A FileName .")
Goto SaveAsHtmlExit
EndIf
EditorAreaItemsCOUNT = CountGadgetItems(EditorArea) + 1
MessageRequester("EditorArea = " , "EditorAreaItemsCOUNT = " + Str(EditorAreaItemsCOUNT) )
If EditorAreaItemsCOUNT < 1
MessageRequester("EditorArea = " , "Nothing To SAVE In EditorArea ?")
Goto SaveAsHtmlExit
EndIf
EditorAreaItemsCOUNT2 = 0
EditorAreaItemsCOUNT = CountGadgetItems(EditorArea)
If CreateFile(1, OutputFileName$) ; If file can be created...
For k = 0 To EditorAreaItemsCOUNT - 1
WriteStringN(1, GetGadgetItemText(EditorArea, k ) )
Next
CloseFile(1)
Else
MessageRequester("OpenFile(1, ", "Can't Open File Listings.txt")
EndIf
SaveAsHtmlExit:
EndProcedure ; SaveAsHtmlBtn()
;
ClearGadgetItems(EditorArea)
OpenWindow_0()
;
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case ExtractBtn
OpenInputFile()
Case ExitBtn
PostEvent(#PB_Event_CloseWindow)
Case SaveAsHtmlBtn
SaveAsHtml()
Case HelpBtn
MessageRequester("" , "HelpBtn")
EndSelect
Case #PB_Event_CloseWindow : End
EndSelect
Until event = #PB_Event_CloseWindow
Thanks