Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
String Function - Allow only specified subset of asci sc
Message
From
25/06/2019 04:47:43
 
 
To
25/06/2019 04:27:00
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01669285
Message ID:
01669286
Views:
76
Likes (1)
Here's our Code, it's used to checkFileNames, bud it should also hit your Task ;)
function chkFilename
	lparameters tcDateiName, tlStrong
	local lcValue, lnI, lcZeichen

	lcValue = tcDateiName

	for lnI = 1 to 13

		do case
			case lnI = 1
				lcZeichen = [\]
			case lnI = 2
				lcZeichen = [/]
			case lnI = 3
				lcZeichen = [:]
			case lnI = 4
				lcZeichen = [*]
			case lnI = 5
				lcZeichen = [?]
			case lnI = 6
				lcZeichen = ["]
			case lnI = 7
				lcZeichen = [<]
			case lnI = 8
				lcZeichen = [>]
			case lnI = 9
				lcZeichen = [|]
			case lnI = 10
				lcZeichen = [,]

				* 05.06.2013 : ToDoID: 11405: CR, LF und TAB dürfen auch nicht im Dateinamen vorkommen!
			case lnI = 11
				* CR
				lcZeichen = chr(13)
			case lnI = 12
				* LF
				lcZeichen = chr(10)
			case lnI = 13
				* TAB
				lcZeichen = chr(9)

		endcase

		if lcZeichen $ lcValue
			lcValue = strtran(lcValue, lcZeichen)
		endif
	endfor

	* Noch strengere Überprüfung von Dateinamen ermöglicht. Es werden nur noch a-z, A-Z und 0-9 zugelassen!
	if tlStrong
		local lnlen, lcNeuerName, lcChar, lnASC
		lnlen = len(lcValue)
		lcNeuerName = ""

		for lnI = 1 to lnlen
			lcChar = substr(lcValue,lnI,1)
			lnASC = asc(lcChar)
			*   "A -Z"                                "a-z"                                "0-9"                               " ", "-"
			if (lnASC >= 65 .and. lnASC <= 90) .or. (lnASC >= 97 .and. lnASC <= 122).or. (lnASC >= 48 .and. lnASC <= 57) .or. inlist(lnASC, 32, 45)
				lcNeuerName = lcNeuerName + lcChar

			else

				do case
					case lnASC = 246
						* ö --> oe
						lcNeuerName = lcNeuerName + "oe"

					case lnASC = 214
						* Ö --> Oe
						lcNeuerName = lcNeuerName + "Oe"

					case lnASC = 196
						* Ä --> Ae
						lcNeuerName = lcNeuerName + "Ae"

					case lnASC = 228
						* ä --> äe
						lcNeuerName = lcNeuerName + "ae"

					case lnASC = 220
						* Ü --> Ue
						lcNeuerName = lcNeuerName + "Ue"

					case lnASC = 252
						* ü --> ue
						lcNeuerName = lcNeuerName + "ue"

					case lnASC = 223
						* ß --> ss
						lcNeuerName = lcNeuerName + "ss"

					otherwise
						* Kein erlaubtes Zeichen --> _ als Platzhalter benutzen
						lcNeuerName = lcNeuerName + "_"
				endcase

			endif
		endfor
		lcValue = lcNeuerName
	endif

	return lcValue

endfunc
Jörg Schneider
Joerg.Schneider@SMARTCRM.de
SMARTCRM CRM powered by MS Visual FoxPro
SMARTCRM GmbH
Previous
Reply
Map
View

Click here to load this message in the networking platform