4 HttpApp
\82Ì
\83N
\83\8d\81[
\83\93\82â
\82»
\82Ì
\91¼
\8eG
\97p
\8aÖ
\90\94
8 //==================================================
10 //==================================================
14 procedure ExtractHttpFields(
15 const chrSep : TSysCharSet;
16 const chrWhite : TSysCharSet;
17 const strValue : string;
18 var strResult : TStringList;
19 unknownFlag : boolean = false
23 const strValue : string
27 const strValue : string
31 const strValue : string
35 const filename, mask : string
38 //
\83\81\83^
\83L
\83\83\83\89\83N
\83^
\82ð
\90³
\8bK
\95\
\8c»
\88µ
\82¢
\82É
\82È
\82ç
\82È
\82¢
\82æ
\82¤
\82É
\92u
\8a·
39 function RegExpEncode(
43 //==================================================
45 //==================================================
46 kYofKanji : TSysCharSet = [#$80..#$A0, #$E0..#$ff];
48 //==================================================
50 //==================================================
52 //
\82Æ
\82è
\82 \82¦
\82¸
\82Ì
\91ã
\97p
\95i
\82È
\82Ì
\82Å chrWhite
\82ð
\8dl
\97¶
\82µ
\82Ä
\82¢
\82È
\82¢
\82±
\82Æ
\82É
\92\8d\88Ó
\81I
\81I
\81I
53 procedure ExtractHttpFields(
54 const chrSep : TSysCharSet;
55 const chrWhite : TSysCharSet;
56 const strValue : string;
57 var strResult : TStringList;
58 unknownFlag : boolean = false
61 last, p, strLen : Integer;
64 strLen := Length( strValue );
71 if strValue[ p ] in chrSep then
73 strResult.Add( Copy( strValue, last, p - last ) );
82 strResult.Add( Copy( strValue, last, strLen - last + 1 ) );
87 const strValue : string
95 strLen := Length( strValue );
101 case strValue[ i ] of
104 strResult := strResult + '&';
108 strResult := strResult + '<';
112 strResult := strResult + '>';
116 strResult := strResult + '"';
120 if strValue[ i ] in kYofKanji then
122 strResult := strResult + strValue[ i ];
125 strResult := strResult + strValue[ i ];
138 const strValue : string
144 strResult := StringReplace( strValue, '<', '<', [rfReplaceAll] );
145 strResult := StringReplace( strResult, '>', '>', [rfReplaceAll] );
146 strResult := StringReplace( strResult, '"', '"', [rfReplaceAll] );
147 strResult := StringReplace( strResult, '&', '&', [rfReplaceAll] );
154 const strValue : string
162 kHexCode : array [0..15] of char = (
163 '0', '1', '2', '3', '4', '5', '6', '7',
164 '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' );
167 strLen := Length( strValue );
173 case strValue[ i ] of
174 '0' .. '9', 'a' .. 'z', 'A' .. 'Z', '*', '-', '.', '@', '_':
176 strResult := strResult + strValue[ i ];
180 b := Integer( strValue[ i ] );
181 strResult := strResult + '%'
182 + kHexCode[ b div $10 ]
183 + kHexCode[ b mod $10 ];
195 //
\82Æ
\82è
\82 \82¦
\82¸
\82Ì
\91ã
\97p
\95i
\82È
\82Ì
\82Å []
\82ð
\8eg
\82Á
\82½
\90³
\8bK
\95\
\8c»
\82ð
\8dl
\97¶
\82µ
\82Ä
\82¢
\82È
\82¢
\82±
\82Æ
\82É
\92\8d\88Ó
\81I
\81I
\81I
196 function MatchesMask(
197 const filename, mask : string
200 pName, pMask : Integer;
201 ptrName, ptrMask : PChar;
202 nameLen, maskLen : Integer;
204 delimiterPos : Integer;
207 nameLen := Length( filename );
208 maskLen := Length( mask );
209 ptrName := PChar( filename );
210 ptrMask := PChar( mask );
213 delimiterPos := Pos( '\', string( ptrName + pName ) );
214 while delimiterPos > 0 do
216 pName := pName + delimiterPos;
217 delimiterPos := Pos( '\', string( ptrName + pName ) );
220 while (pMask < maskLen) and (pName < nameLen) do
223 case ptrMask[ pMask ] of
226 //
\82±
\82Ì 1
\8e\9a\82Í
\89½
\82à
\82µ
\82È
\82¢
231 // mask
\82ð
\91\96\8d¸
\82µ
\90Ø
\82Á
\82½
\82ç
\8fI
\97¹
232 if pMask >= maskLen then
238 // *
\82Ì
\8e\9f\82Ì
\95¶
\8e\9a\82ª
\97\88\82é
\82Ü
\82Å
\94ò
\82Î
\82·
239 chrUpMask := upcase( ptrMask[ pMask ] );
240 while chrUpMask <> UpCase( ptrName[ pName ] ) do
243 if pName >= nameLen then
250 // *
\82Ì
\8e\9f\82Ì
\95¶
\8e\9a\82ª
\8c©
\82Â
\82©
\82ç
\82È
\82©
\82Á
\82½
\82ç
\8fI
\97¹
251 if chrUpMask <> UpCase( ptrName[ pName ] ) then
262 //
\82±
\82Ì 1
\95¶
\8e\9a\82ª
\88á
\82Á
\82½
\82ç
\8fI
\97¹
263 if UpCase( ptrMask[ pMask ] ) <> UpCase( ptrName[ pName ] ) then
272 //
\8e\9f\82Ì
\95¶
\8e\9a\82Ö
278 if (pMask >= maskLen) and (pName >= nameLen) then
286 //
\83\81\83^
\83L
\83\83\83\89\83N
\83^
\82ð
\90³
\8bK
\95\
\8c»
\88µ
\82¢
\82É
\82È
\82ç
\82È
\82¢
\82æ
\82¤
\82É
\92u
\8a·
287 function RegExpEncode(
294 strResult := StringReplace( text, '\', '\\', [rfReplaceAll] );
295 strResult := StringReplace( strResult, '[', '\[', [rfReplaceAll] );
296 strResult := StringReplace( strResult, ']', '\]', [rfReplaceAll] );
297 strResult := StringReplace( strResult, '(', '\(', [rfReplaceAll] );
298 strResult := StringReplace( strResult, ')', '\)', [rfReplaceAll] );
299 strResult := StringReplace( strResult, '[', '\[', [rfReplaceAll] );
300 strResult := StringReplace( strResult, ']', '\]', [rfReplaceAll] );
301 strResult := StringReplace( strResult, '*', '\*', [rfReplaceAll] );
302 strResult := StringReplace( strResult, '?', '\?', [rfReplaceAll] );
303 strResult := StringReplace( strResult, '.', '\.', [rfReplaceAll] );
304 strResult := StringReplace( strResult, '+', '\+', [rfReplaceAll] );
305 strResult := StringReplace( strResult, '|', '\|', [rfReplaceAll] );
306 strResult := StringReplace( strResult, '^', '\^', [rfReplaceAll] );
307 strResult := StringReplace( strResult, '$', '\$', [rfReplaceAll] );