-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathRead_InstallFiles.prg
153 lines (123 loc) · 2.81 KB
/
Read_InstallFiles.prg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
LPARAMETERS;
tcDirectory
*set step on
tcDirectory = EXECSCRIPT(_SCREEN.cThorDispatcher, 'Thor_Proc_GetFoxBin2PrgFolder')
DO CASE
CASE VARTYPE(tcDirectory)#'C'
CASE !INLIST(UPPER(tcDirectory),'?','/?','-?','/Help','-Help')
OTHERWISE
tcDirectory = JUSTFNAME(SYS(16))
InfoScreen(tcDirectory)
RETURN
ENDCASE
ADDPROPERTY(_SCREEN,'gvX1',tcDirectory)
CLEAR ALL
LOCAL;
lcDir,;
lcExt,;
lcErr,;
lcOldPath,;
lcDirectory,;
llNewGUID,;
lcResult
lcDirectory = _SCREEN.gvX1
REMOVEPROPERTY(_SCREEN,'gvX1')
lcOldPath = FULLPATH(CURDIR())
DO CASE
CASE EMPTY(lcDirectory)
lcDir = ''
CASE !DIRECTORY(lcDirectory) AND !FILE(lcDirectory)
lcDir = ''
CASE DIRECTORY(lcDirectory)
lcDir = ADDBS(lcDirectory)
OTHERWISE
MESSAGEBOX('Nicht unterstützter Dateityp.')
RETURN
ENDCASE
IF EMPTY(lcDir) THEN
CLEAR
lcDir = GETDIR('','','',64)
IF ALLTRIM(lcDir)=='' THEN
RETURN
ENDIF &&ALLTRIM(lcDir)==''
ENDIF &&EMPTY(lcDir)
PUBLIC;
poRegExp
*!* poRegExp = CREATEOBJECT('VBScript.RegExp')
*!* WITH poRegExp
*!* .IgnoreCase = .T.
*!* .GLOBAL = .T.
*!* .MultiLine = .T.
*!* ENDWITH &&poRegExp
lcErr = ''
lcResult = ''
ScanDir(lcDir,@lcErr,lcDir,@lcResult)
_CLIPTEXT = lcResult
IF !EMPTY(lcErr) THEN
MESSAGEBOX('Fehler in der Zwischenablage gespeichert',0+48)
_CLIPTEXT = SUBSTR(lcErr,3)
ENDIF &&!EMPTY(lcErr)
poRegExp = .NULL.
RELEASE;
poRegExp
CD (lcOldPath)
RETURN lcResult
PROCEDURE InfoScreen
LPARAMETERS;
tcProgram
LOCAL;
lcTemp AS CHARACTER,;
lnOldMemoW AS INTEGER
TEXT TO lcTEMP NOSHOW textmerge
<<tcProgram>>
Creates a list of files in a given subdirectory with subdirectories.
Usage:
<<tcProgram>> [/?] [cDirectory]
/? Displays this text
cDirectory optional directory to start from, subdirectories will be included
Return is in clipboard
ENDTEXT
lnOldMemoW = SET("Memowidth")
SET MEMOWIDTH TO 100
?lcTemp FONT 'Courier',6
SET MEMOWIDTH TO lnOldMemoW
ENDPROC &&InfoScreen
PROCEDURE ScanDir
LPARAMETERS;
tcDir,;
tcErr,;
tcDir2,;
tcResult
LOCAL;
lnLoop1,;
lcOldDir
LOCAL ARRAY;
laDir(1)
* SET STEP ON
lcOldDir = FULLPATH(CURDIR())
CD (tcDir)
FOR lnLoop1 = 1 TO ADIR(laDir,'','D')
IF INLIST(laDir(lnLoop1,1),'.','..') THEN
LOOP
ENDIF &&INLIST(laDir(lnLoop1,1),'.','..')
ScanDir(ADDBS(tcDir+laDir(lnLoop1,1)),@tcErr,tcDir2,@tcResult)
ENDFOR &&lnLoop1
Dir_Action(tcDir,@tcErr,tcDir2,@tcResult)
CD (lcOldDir)
ENDPROC &&ScanDir
PROCEDURE Dir_Action
LPARAMETERS;
tcDir,;
tcErr,;
tcDir2,;
tcResult
LOCAL;
lnStart AS INTEGER
LOCAL ARRAY;
laDir(1)
tcDir2 = STRTRAN(tcDir,tcDir2,'')
FOR lnStart = 1 TO ADIR(laDir,'*.*')
tcResult = tcResult+0h0d0a+laDir(lnStart,1)
ENDFOR &&lnStart
RETURN
ENDPROC &&Dir_Action