George Procedures : Advanced
From TVPaintWiki
<<<George<<<George Command Reference
These are the functions from the include script advanced.grg
Contents
InsertAfter(string,insert,search)
//------------------------------------------ // // InsertAfter // // Function: insert a string after each // occurence of a character or // a set of characters into // another string // // Call: InsertAfter(string,insert,search) // // Arguments: // string = characters string // insert = string to insert // search = character or substring // to look for // // Return: result string after insertion // //------------------------------------------ FUNCTION InsertAfter(string,insert,search) LOCAL pos workstr size pos = 1 workstr = string size = LEN(search) WHILE ((pos = FindString(workstr,search,pos)) > 0) workstr = InsertStringAtPos(workstr,insert,pos+size-1) pos = pos+size+LEN(insert) END RETURN workstr END
InsertBefore(string,insert,search)
//------------------------------------------ // // InsertBefore // // Function: insert a string before each // occurence of a character or // a set of characters into // another string // // Call: InsertBefore(string,insert,search) // // Arguments: // string = characters string // insert = string to insert // search = character or substring // to look for // // Return: result string after insertion // //------------------------------------------ FUNCTION InsertBefore(string,insert,search) LOCAL pos workstr pos = 1 workstr = string WHILE ((pos = FindString(workstr,search,pos)) > 0) workstr = InsertStringAtPos(workstr,insert,pos-1) pos = pos+LEN(search)+LEN(insert) END RETURN workstr END
Delete(string,search)
//------------------------------------------ // // Delete // // Function: delete all occurences of a // substring into a string // // Call: Delete(string,search) // // Arguments: // string = characters string // search = substring to delete // // Return: result string after deletion // //------------------------------------------ FUNCTION Delete(string,search) LOCAL workstr str1 str2 pos size workstr = string pos = 1 size = LEN(search) WHILE ((pos = FindString(workstr,search,1)) > 0) IF ((pos != 1) && ((pos+size) < LEN(workstr))) str1 = CUT(workstr,1,pos-1) str2 = CUT(workstr,pos+size,LEN(workstr)) workstr = str1""str2 ELSE IF (pos == 1) IF ((size+1) < LEN(workstr)) workstr = CUT(workstr,size+1,LEN(workstr)) ELSE workstr = "" END ELSE workstr = CUT(workstr,1,pos-1) END END END RETURN workstr END
Replace(string,search,repl)
//------------------------------------------ // // Replace // // Function: replace each occurence of a // substring into a string with // another string // // Call: Replace(string,search,repl) // // Arguments: // string = characters string // search = substring to look for // repl = replacement substring // // Return: result string after replacement // //------------------------------------------ FUNCTION Replace(string,search,repl) LOCAL pos workstr str1 str2 size pos = 1 workstr = string size = LEN(search) WHILE ((pos = FindString(workstr,search,pos)) > 0) IF (pos == 1) str1 = CUT(workstr,size+1,LEN(workstr)) workstr = repl""str1 pos = 0 ELSE str1 = CUT(workstr,1,pos-1) IF ((pos+size) < LEN(workstr)) str2 = CUT(workstr,pos+size,LEN(workstr)) workstr = str1""repl""str2 ELSE workstr = str1""repl END END pos = pos+LEN(repl) END RETURN workstr END
NewParse(string,divider)
//------------------------------------------ // // NewParse // // Function: cut a string into several parts and // store each part into a variable. // The string is cut before each // occurence of a specified character. // // Call: NewParse(string,divider) // // Arguments: // string = characters string // divider = character used as a separator // between each part of the string // // Return: number of variables created. // This function create global variables // named var(1), var(2)...var(N), where // N is the value returned by the function. // // Note: if the string contained two or more // successive separators, no variable is // created for these parts of the string. // For example, if you call the NewParse // function for "First;;Second" with // divider=";", only two variables are // created (var(1)="First" and // var(2)="Second"). // //------------------------------------------ FUNCTION NewParse(string,divider) LOCAL pos i workstr size i = 0 pos = 1 workstr = string IF ((CMP(workstr,"") == 0) && (CMP(divider,"") == 0) && (CMP(workstr,divider) == 0)) WHILE ((pos = Find(workstr,divider,1)) > 0) IF ((pos != 1) && (pos != LEN(workstr))) i = i+1 var(i) = CUT(workstr,1,pos-1) workstr = CUT(workstr,pos+1,LEN(workstr)) ELSE IF (pos == 1) IF (pos != LEN(workstr)) workstr = CUT(workstr,2,LEN(workstr)) ELSE workstr = "" END ELSE workstr = CUT(workstr,pos,LEN(workstr)) END END END if (CMP(workstr,0) == 0) i = i+1 var(i) = workstr END END RETURN i END
FileRequester(title,path,file,pattern)
//------------------------------------------ // // FileRequester // // Function: open a file requester // // Call: FileRequester(title,path,file,pattern) // // Arguments: // title = requester title // path = default directory // file = default filename // pattern = default pattern // // Return: 0 if user clicks on Cancel // 1 if user chooses a file. This // function creates three global // variables: pathname (path // to choosen file), filename // (name of choosen file without // extension) and extension // (extension of choosen file) // //------------------------------------------ FUNCTION FileRequester(title,path,file,pattern) LOCAL fullname point slash size titre pathname = "" filename = "" extension = "" IF (CMP(pattern,0) == 1) titre = "|" ELSE titre = "|"pattern END IF (CMP(file,0) == 1) titre = "|"titre ELSE titre = "|"file""titre END IF (CMP(path,0) == 1) titre = "|"titre ELSE titre = "|"path""titre END IF (CMP(title,0) == 1) titre = "Choose a file"titre ELSE titre = title""titre END tv_ReqFile titre fullname = Result size = LEN(fullname) IF (CMP(fullname,"Cancel") == 1) RETURN 0 ELSE IF ((point = LastPos(fullname,".")) != 0) extension = CUT(fullname,point+1,size) size = point-1 fullname = CUT(fullname,1,size) END IF ((slash = LastPos(fullname,"\")) != 0) filename = CUT(fullname,slash+1,size) size = slash-1 pathname = CUT(fullname,1,size) END RETURN 1 END END