Revision | 517b32011387e549c30cdbd3d6c3b1fae306ad8b (tree) |
---|---|
Zeit | 2019-03-28 16:02:16 |
Autor | kentamaken <kentamaken@gmai...> |
Commiter | kentamaken |
SSLのDLLが必要な事に気づいたのでいらない方に切り替え
プリセットにJOUSOUND追加
アルバム=曲名回避
テキストの検索・置き換え、正規表現
(生音)とか消しつつ重複削除追加
ウエイト調整
@@ -20,18 +20,18 @@ object TextDeFindForm: TTextDeFindForm | ||
20 | 20 | TextHeight = 16 |
21 | 21 | object Splitter1: TSplitter |
22 | 22 | Left = 185 |
23 | - Top = 328 | |
23 | + Top = 345 | |
24 | 24 | Width = 9 |
25 | - Height = 163 | |
25 | + Height = 146 | |
26 | 26 | ExplicitLeft = 232 |
27 | 27 | ExplicitTop = 200 |
28 | 28 | ExplicitHeight = 65 |
29 | 29 | end |
30 | 30 | object Web: TWebBrowser |
31 | 31 | Left = 194 |
32 | - Top = 328 | |
32 | + Top = 345 | |
33 | 33 | Width = 548 |
34 | - Height = 163 | |
34 | + Height = 146 | |
35 | 35 | Align = alClient |
36 | 36 | TabOrder = 7 |
37 | 37 | ExplicitLeft = 242 |
@@ -39,7 +39,7 @@ object TextDeFindForm: TTextDeFindForm | ||
39 | 39 | ExplicitWidth = 300 |
40 | 40 | ExplicitHeight = 150 |
41 | 41 | ControlData = { |
42 | - 4C000000A3380000D91000000000000000000000000000000000000000000000 | |
42 | + 4C000000A3380000170F00000000000000000000000000000000000000000000 | |
43 | 43 | 000000004C000000000000000000000001000000E0D057007335CF11AE690800 |
44 | 44 | 2B2E126208000000000000004C0000000114020000000000C000000000000046 |
45 | 45 | 8000000000000000000000000000000000000000000000000000000000000000 |
@@ -47,22 +47,26 @@ object TextDeFindForm: TTextDeFindForm | ||
47 | 47 | end |
48 | 48 | object Memo1: TMemo |
49 | 49 | Left = 194 |
50 | - Top = 328 | |
50 | + Top = 345 | |
51 | 51 | Width = 548 |
52 | - Height = 163 | |
52 | + Height = 146 | |
53 | 53 | Align = alClient |
54 | 54 | Lines.Strings = ( |
55 | 55 | 'Memo1') |
56 | 56 | TabOrder = 8 |
57 | + ExplicitTop = 328 | |
58 | + ExplicitHeight = 163 | |
57 | 59 | end |
58 | 60 | object LeftPanel: TPanel |
59 | 61 | Left = 0 |
60 | - Top = 328 | |
62 | + Top = 345 | |
61 | 63 | Width = 185 |
62 | - Height = 163 | |
64 | + Height = 146 | |
63 | 65 | Align = alLeft |
64 | 66 | Caption = 'LeftPanel' |
65 | 67 | TabOrder = 4 |
68 | + ExplicitTop = 328 | |
69 | + ExplicitHeight = 163 | |
66 | 70 | object ListName: TComboBox |
67 | 71 | Left = 1 |
68 | 72 | Top = 1 |
@@ -81,7 +85,7 @@ object TextDeFindForm: TTextDeFindForm | ||
81 | 85 | Left = 1 |
82 | 86 | Top = 51 |
83 | 87 | Width = 183 |
84 | - Height = 111 | |
88 | + Height = 94 | |
85 | 89 | Align = alClient |
86 | 90 | Font.Charset = SHIFTJIS_CHARSET |
87 | 91 | Font.Color = clWindowText |
@@ -96,6 +100,7 @@ object TextDeFindForm: TTextDeFindForm | ||
96 | 100 | TabOrder = 1 |
97 | 101 | Zoom = 100 |
98 | 102 | OnMouseUp = TextMouseUp |
103 | + ExplicitHeight = 111 | |
99 | 104 | end |
100 | 105 | object Tree: TTreeView |
101 | 106 | Left = 1 |
@@ -135,7 +140,7 @@ object TextDeFindForm: TTextDeFindForm | ||
135 | 140 | Width = 75 |
136 | 141 | Height = 23 |
137 | 142 | Align = alLeft |
138 | - Caption = #26908#32034 | |
143 | + Caption = 'File'#26908#32034 | |
139 | 144 | TabOrder = 1 |
140 | 145 | OnClick = FindClick |
141 | 146 | end |
@@ -173,9 +178,9 @@ object TextDeFindForm: TTextDeFindForm | ||
173 | 178 | end |
174 | 179 | object GridFiles: TStringGrid |
175 | 180 | Left = 194 |
176 | - Top = 328 | |
181 | + Top = 345 | |
177 | 182 | Width = 548 |
178 | - Height = 163 | |
183 | + Height = 146 | |
179 | 184 | Align = alClient |
180 | 185 | Ctl3D = False |
181 | 186 | DrawingStyle = gdsClassic |
@@ -186,6 +191,8 @@ object TextDeFindForm: TTextDeFindForm | ||
186 | 191 | OnMouseDown = GridFilesMouseDown |
187 | 192 | OnSelectCell = GridFilesSelectCell |
188 | 193 | OnSetEditText = GridFilesSetEditText |
194 | + ExplicitTop = 328 | |
195 | + ExplicitHeight = 163 | |
189 | 196 | ColWidths = ( |
190 | 197 | 64 |
191 | 198 | 64 |
@@ -277,9 +284,6 @@ object TextDeFindForm: TTextDeFindForm | ||
277 | 284 | |
278 | 285 | '[youtube] https://www.youtube.com/results?search_query=%'#12522#12473#12488#21517'% %' + |
279 | 286 | #26908#32034#25991#23383'%' |
280 | - | |
281 | - '[DAM] https://www.clubdam.com/app/search/searchKaraokeKeywo' + | |
282 | - 'rdArtist.html?keyword=%'#12522#12473#12488#21517'%' | |
283 | 287 | '[apple] https://playapplemusic.com/search?q=%'#12522#12473#12488#21517'% %'#26908#32034#25991#23383'%' |
284 | 288 | |
285 | 289 | '[apple] https://linkmaker.itunes.apple.com/ja-jp?country=jp&m' + |
@@ -289,7 +293,17 @@ object TextDeFindForm: TTextDeFindForm | ||
289 | 293 | 'untry=jp' |
290 | 294 | |
291 | 295 | '[apple] https://freefielder.jp/itunes2/itsearch.php?searchKey' + |
292 | - '=music&str=%'#26908#32034#25991#23383'%') | |
296 | + '=music&str=%'#26908#32034#25991#23383'%' | |
297 | + '' | |
298 | + | |
299 | + '[DAM] https://www.clubdam.com/app/search/searchKaraokeKeywo' + | |
300 | + 'rdArtist.html?keyword=%'#12522#12473#12488#21517'%' | |
301 | + | |
302 | + '[JOY] https://joysound.biz/search/artist.php?machine=Z&word' + | |
303 | + '=%'#12522#12473#12488#21517'%&matchs=1' | |
304 | + | |
305 | + '[JOY'#38911'] https://joysound.biz/search/artist.php?machine=U&word=%'#12522 + | |
306 | + #12473#12488#21517'%&matchs=1') | |
293 | 307 | end |
294 | 308 | object FindUrlButton: TButton |
295 | 309 | Left = 1 |
@@ -297,7 +311,7 @@ object TextDeFindForm: TTextDeFindForm | ||
297 | 311 | Width = 75 |
298 | 312 | Height = 23 |
299 | 313 | Align = alLeft |
300 | - Caption = #26908#32034'URL' | |
314 | + Caption = 'WEB'#26908#32034 | |
301 | 315 | TabOrder = 1 |
302 | 316 | OnClick = FindUrlButtonClick |
303 | 317 | end |
@@ -326,7 +340,7 @@ object TextDeFindForm: TTextDeFindForm | ||
326 | 340 | Left = 0 |
327 | 341 | Top = 50 |
328 | 342 | Width = 742 |
329 | - Height = 278 | |
343 | + Height = 295 | |
330 | 344 | Align = alTop |
331 | 345 | AutoSize = True |
332 | 346 | TabOrder = 6 |
@@ -341,6 +355,7 @@ object TextDeFindForm: TTextDeFindForm | ||
341 | 355 | Checked = True |
342 | 356 | State = cbChecked |
343 | 357 | TabOrder = 0 |
358 | + ExplicitTop = 60 | |
344 | 359 | end |
345 | 360 | object OpUrlSpace: TCheckBox |
346 | 361 | Left = 1 |
@@ -352,6 +367,7 @@ object TextDeFindForm: TTextDeFindForm | ||
352 | 367 | Checked = True |
353 | 368 | State = cbChecked |
354 | 369 | TabOrder = 1 |
370 | + ExplicitTop = 19 | |
355 | 371 | end |
356 | 372 | object OpURLZenkaku: TCheckBox |
357 | 373 | Left = 1 |
@@ -361,6 +377,7 @@ object TextDeFindForm: TTextDeFindForm | ||
361 | 377 | Align = alTop |
362 | 378 | Caption = #20840#35282#21270 |
363 | 379 | TabOrder = 2 |
380 | + ExplicitTop = 101 | |
364 | 381 | end |
365 | 382 | object OpURLEscapeEdit: TEdit |
366 | 383 | Left = 1 |
@@ -370,6 +387,7 @@ object TextDeFindForm: TTextDeFindForm | ||
370 | 387 | Align = alTop |
371 | 388 | TabOrder = 3 |
372 | 389 | Text = ':/?#[]@!$&'#39#39'()*+,;=' |
390 | + ExplicitTop = 77 | |
373 | 391 | end |
374 | 392 | object OpURLSpaceEdit: TEdit |
375 | 393 | Left = 1 |
@@ -381,6 +399,7 @@ object TextDeFindForm: TTextDeFindForm | ||
381 | 399 | Text = |
382 | 400 | '!"#$%&'#39'()*+,-./:;<=>?@[\]^_`{|}~'#65295#65340#65374#8741#65372#8230#8229#8216#8217#8220#8221#65288#65289#12308#12309#65339#65341#65371#65373#12296#12297#12298#12299#12300#12301#12302#12303#12304#12305#65291#65293#177 + |
383 | 401 | #215#247#65309#8800#65308#65310#8806#8807#8734#8756#9794#9792#176#8242#8243#8451#65509#65284#65504#65505#65285#65283#65286#65290#65312#167#9734#9733#9675#9679#9678#9671' '#9670#9633#9632#9651#9650#9661#9660#8251#12306#8594#8592#8593#8595 |
402 | + ExplicitTop = 36 | |
384 | 403 | end |
385 | 404 | object OptionUrlDQuote: TCheckBox |
386 | 405 | Left = 1 |
@@ -390,6 +409,7 @@ object TextDeFindForm: TTextDeFindForm | ||
390 | 409 | Align = alTop |
391 | 410 | Caption = '""'#12391#22258#12416 |
392 | 411 | TabOrder = 5 |
412 | + ExplicitTop = 118 | |
393 | 413 | end |
394 | 414 | object OpURLComment: TCheckBox |
395 | 415 | Left = 1 |
@@ -401,6 +421,7 @@ object TextDeFindForm: TTextDeFindForm | ||
401 | 421 | Checked = True |
402 | 422 | State = cbChecked |
403 | 423 | TabOrder = 6 |
424 | + ExplicitTop = 2 | |
404 | 425 | end |
405 | 426 | object OpURLFile: TCheckBox |
406 | 427 | Left = 1 |
@@ -410,10 +431,11 @@ object TextDeFindForm: TTextDeFindForm | ||
410 | 431 | Align = alTop |
411 | 432 | Caption = #12501#12449#12452#12523#21015#12395#29983#12487#12540#12479 |
412 | 433 | TabOrder = 7 |
434 | + ExplicitTop = 135 | |
413 | 435 | end |
414 | 436 | object OpURLituneNazo: TCheckBox |
415 | 437 | Left = 1 |
416 | - Top = 185 | |
438 | + Top = 202 | |
417 | 439 | Width = 740 |
418 | 440 | Height = 17 |
419 | 441 | Align = alTop |
@@ -421,26 +443,29 @@ object TextDeFindForm: TTextDeFindForm | ||
421 | 443 | Checked = True |
422 | 444 | State = cbChecked |
423 | 445 | TabOrder = 8 |
446 | + ExplicitTop = 186 | |
424 | 447 | end |
425 | 448 | object OpURLWait: TMaskEdit |
426 | 449 | Left = 1 |
427 | - Top = 219 | |
450 | + Top = 236 | |
428 | 451 | Width = 740 |
429 | 452 | Height = 24 |
430 | 453 | Align = alTop |
431 | 454 | EditMask = #12454#12456#12452#12488'#####;1; ' |
432 | 455 | MaxLength = 9 |
433 | 456 | TabOrder = 9 |
434 | - Text = #12454#12456#12452#12488'3000 ' | |
457 | + Text = #12454#12456#12452#12488'8000 ' | |
458 | + ExplicitTop = 220 | |
435 | 459 | end |
436 | 460 | object OpURLLocal: TCheckBox |
437 | 461 | Left = 1 |
438 | - Top = 202 | |
462 | + Top = 219 | |
439 | 463 | Width = 740 |
440 | 464 | Height = 17 |
441 | 465 | Align = alTop |
442 | 466 | Caption = #12525#12540#12459#12523#26908#32034#12418#23455#34892 |
443 | 467 | TabOrder = 10 |
468 | + ExplicitTop = 203 | |
444 | 469 | end |
445 | 470 | object OpURLitune: TCheckBox |
446 | 471 | Left = 1 |
@@ -452,15 +477,17 @@ object TextDeFindForm: TTextDeFindForm | ||
452 | 477 | Checked = True |
453 | 478 | State = cbChecked |
454 | 479 | TabOrder = 11 |
480 | + ExplicitTop = 152 | |
455 | 481 | end |
456 | 482 | object OpURLNoSave: TCheckBox |
457 | 483 | Left = 1 |
458 | - Top = 260 | |
484 | + Top = 277 | |
459 | 485 | Width = 740 |
460 | 486 | Height = 17 |
461 | 487 | Align = alTop |
462 | 488 | Caption = #20445#23384#12379#12378#12395#32066#20102 |
463 | 489 | TabOrder = 12 |
490 | + ExplicitTop = 261 | |
464 | 491 | end |
465 | 492 | object OpURLOpenSave: TCheckBox |
466 | 493 | Left = 1 |
@@ -470,15 +497,28 @@ object TextDeFindForm: TTextDeFindForm | ||
470 | 497 | Align = alTop |
471 | 498 | Caption = 'itmss:'#12506#12540#12472#12434#12501#12449#12452#12523#12395#20445#23384'('#23455#34892#12501#12457#12523#12480')' |
472 | 499 | TabOrder = 13 |
500 | + ExplicitTop = 169 | |
473 | 501 | end |
474 | 502 | object OpURLReset: TCheckBox |
475 | 503 | Left = 1 |
476 | - Top = 243 | |
504 | + Top = 260 | |
477 | 505 | Width = 740 |
478 | 506 | Height = 17 |
479 | 507 | Align = alTop |
480 | 508 | Caption = #35373#23450#12434#21021#26399#21270#12375#12390#32066#20102 |
481 | 509 | TabOrder = 14 |
510 | + ExplicitTop = 244 | |
511 | + end | |
512 | + object OpURLituneTitleMatch: TCheckBox | |
513 | + Left = 1 | |
514 | + Top = 185 | |
515 | + Width = 740 | |
516 | + Height = 17 | |
517 | + Align = alTop | |
518 | + Caption = 'itmss:'#26908#32034#25991#23383#12391#32094#12427'('#12450#12523#12496#12512#21516#21517#26354#22238#36991')' | |
519 | + Checked = True | |
520 | + State = cbChecked | |
521 | + TabOrder = 15 | |
482 | 522 | end |
483 | 523 | end |
484 | 524 | object PopupMenu2: TPopupMenu |
@@ -593,6 +633,21 @@ object TextDeFindForm: TTextDeFindForm | ||
593 | 633 | Caption = #26908#32034'URL' |
594 | 634 | OnClick = PTextFindUrlClick |
595 | 635 | end |
636 | + object N4: TMenuItem | |
637 | + Caption = '-' | |
638 | + end | |
639 | + object MTextDelKakko: TMenuItem | |
640 | + Caption = '()[]'#20184#12365#12392#37325#35079#12434#21066#38500 | |
641 | + OnClick = MTextDelKakkoClick | |
642 | + end | |
643 | + object PTextTextReplace: TMenuItem | |
644 | + Caption = #12486#12461#12473#12488#32622#12365#25563#12360 | |
645 | + OnClick = PTextTextReplaceClick | |
646 | + end | |
647 | + object PTextTextReplaceReg: TMenuItem | |
648 | + Caption = #32622#12365#25563#12360#27491#35215#34920#29694 | |
649 | + OnClick = PTextTextReplaceRegClick | |
650 | + end | |
596 | 651 | end |
597 | 652 | object SaveDialog: TSaveDialog |
598 | 653 | Left = 64 |
@@ -630,4 +685,28 @@ object TextDeFindForm: TTextDeFindForm | ||
630 | 685 | Left = 48 |
631 | 686 | Top = 416 |
632 | 687 | end |
688 | + object NetHTTPClient: TNetHTTPClient | |
689 | + Asynchronous = False | |
690 | + ConnectionTimeout = 60000 | |
691 | + ResponseTimeout = 60000 | |
692 | + HandleRedirects = True | |
693 | + AllowCookies = True | |
694 | + UserAgent = 'Embarcadero URI Client/1.0' | |
695 | + Left = 160 | |
696 | + Top = 416 | |
697 | + end | |
698 | + object NetHTTPRequest: TNetHTTPRequest | |
699 | + Asynchronous = False | |
700 | + ConnectionTimeout = 60000 | |
701 | + ResponseTimeout = 60000 | |
702 | + Client = NetHTTPClient | |
703 | + Left = 152 | |
704 | + Top = 472 | |
705 | + end | |
706 | + object ReplaceDialog: TReplaceDialog | |
707 | + OnFind = ReplaceDialogFind | |
708 | + OnReplace = ReplaceDialogReplace | |
709 | + Left = 80 | |
710 | + Top = 472 | |
711 | + end | |
633 | 712 | end |
@@ -9,7 +9,8 @@ uses | ||
9 | 9 | types,inifiles, |
10 | 10 | Vcl.ComCtrls,ShlObj,ActiveX,Vcl.Menus,Vcl.CheckLst,IdBaseComponent, |
11 | 11 | IdComponent,IdTCPConnection,IdTCPClient,IdGlobal,IdURI,IdHTTP,Vcl.OleCtrls,SHDocVw, |
12 | - IdIOHandler,IdIOHandlerSocket,IdIOHandlerStack,IdSSL,IdSSLOpenSSL,Vcl.Mask; | |
12 | + IdIOHandler,IdIOHandlerSocket,IdIOHandlerStack,IdSSL,IdSSLOpenSSL,Vcl.Mask, | |
13 | + System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent; | |
13 | 14 | |
14 | 15 | type |
15 | 16 | TStringSelf=class(TStringList) |
@@ -166,6 +167,14 @@ type | ||
166 | 167 | N3: TMenuItem; |
167 | 168 | PReload: TMenuItem; |
168 | 169 | PTextListName: TMenuItem; |
170 | + NetHTTPClient: TNetHTTPClient; | |
171 | + NetHTTPRequest: TNetHTTPRequest; | |
172 | + MTextDelKakko: TMenuItem; | |
173 | + PTextTextReplaceReg: TMenuItem; | |
174 | + ReplaceDialog: TReplaceDialog; | |
175 | + PTextTextReplace: TMenuItem; | |
176 | + N4: TMenuItem; | |
177 | + OpURLituneTitleMatch: TCheckBox; | |
169 | 178 | procedure FindClick(Sender:TObject); |
170 | 179 | procedure FormCreate(Sender:TObject); |
171 | 180 | procedure GridFilesMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer); |
@@ -206,15 +215,22 @@ type | ||
206 | 215 | procedure PReFindClick(Sender: TObject); |
207 | 216 | procedure PReloadClick(Sender: TObject); |
208 | 217 | procedure PTextListNameClick(Sender: TObject); |
218 | + procedure PTextTextReplaceClick(Sender: TObject); | |
219 | + procedure ReplaceDialogReplace(Sender: TObject); | |
220 | + procedure ReplaceDialogFind(Sender: TObject); | |
221 | + procedure PTextTextReplaceRegClick(Sender: TObject); | |
222 | + procedure MTextDelKakkoClick(Sender: TObject); | |
209 | 223 | private |
210 | 224 | function getpathtext:string; |
211 | 225 | function localfind(var sa:TStringDynArray;ssss:string):boolean; |
212 | - function iddownload(Url: string): string; | |
213 | - function getsearchtext(Url: String): String; | |
226 | + function iddownload(Url: string): string; | |
227 | + function getsearchtext(Url: String): String; | |
228 | + function tnetdownload(Url: string): string; | |
214 | 229 | { Private 宣言 } |
215 | 230 | public |
216 | 231 | { Public 宣言 } |
217 | 232 | Files:TGrid; |
233 | + EnableReplaceReg:boolean; | |
218 | 234 | |
219 | 235 | function QueryContinueDrag(fEscapePressed:BOOL;grfKeyState:Longint):HResult;stdcall; |
220 | 236 | function GiveFeedback(dwEffect:Longint):HResult;stdcall; |
@@ -444,6 +460,129 @@ begin | ||
444 | 460 | Result:=S_OK; |
445 | 461 | end; |
446 | 462 | |
463 | +procedure TTextDeFindForm.PTextTextReplaceClick(Sender: TObject); | |
464 | +begin | |
465 | + ReplaceDialog.FindText := Text.SelText ; | |
466 | + EnableReplaceReg:=false; | |
467 | + ReplaceDialog.Options:=ReplaceDialog.Options-[frHideMatchCase]; | |
468 | + ReplaceDialog.Options:=ReplaceDialog.Options-[frHideWholeWord]; | |
469 | + ReplaceDialog.Execute() ; | |
470 | +end; | |
471 | + | |
472 | +procedure TTextDeFindForm.PTextTextReplaceRegClick(Sender: TObject); | |
473 | +begin | |
474 | + ReplaceDialog.FindText := Text.SelText ; | |
475 | + EnableReplaceReg:=true; | |
476 | + ReplaceDialog.Options:=ReplaceDialog.Options+[frHideMatchCase]; | |
477 | + ReplaceDialog.Options:=ReplaceDialog.Options+[frHideWholeWord]; | |
478 | + ReplaceDialog.Execute() ; | |
479 | +end; | |
480 | + | |
481 | +procedure TTextDeFindForm.MTextDelKakkoClick(Sender: TObject); | |
482 | +var s:string; | |
483 | + sa:TStringDynArray; | |
484 | +begin | |
485 | + Text.Lines.Text:=TRegEx.Replace(Text.Lines.Text,'\(.*?\)',''); | |
486 | + Text.Lines.Text:=TRegEx.Replace(Text.Lines.Text,'\[.*?\]',''); | |
487 | + | |
488 | + for s in self.Text.lines do | |
489 | + sa.adduni(trim(s)); | |
490 | + with sa.stringselfcreate do try | |
491 | + self.Text.lines.Assign(this); | |
492 | + finally | |
493 | + free; | |
494 | + end; | |
495 | + | |
496 | +end; | |
497 | + | |
498 | + | |
499 | +procedure TTextDeFindForm.ReplaceDialogFind(Sender: TObject); | |
500 | +var | |
501 | + R: TReplaceDialog; | |
502 | + ST : TSearchTypes; | |
503 | + p,l,sels,sell:integer; | |
504 | + rs,fs:string; | |
505 | + regmop: TRegExOptions; | |
506 | + regmt: TMatch; | |
507 | + regg: TGroup; | |
508 | + | |
509 | +begin | |
510 | + R:=ReplaceDialog; | |
511 | + fs:=R.FindText; | |
512 | + if (frMatchCase in R.Options) then ST:=ST+[stMatchCase]; | |
513 | + if (frWholeWord in R.Options) then ST:=ST+[stWholeWord]; | |
514 | + | |
515 | + sels:=Text.SelStart; | |
516 | + sell:=Text.SelLength; | |
517 | + | |
518 | + p:=-1; | |
519 | + l:=0; | |
520 | + if frDown in R.Options then begin | |
521 | + if EnableReplaceReg then begin | |
522 | + | |
523 | + Text.Lines.LineBreak:=LF; | |
524 | + rs:=Text.Lines.Text; | |
525 | + for regmt in TRegEx.Matches(rs,fs,regmop) do begin | |
526 | + for regg in regmt.Groups do begin | |
527 | +// if regg.Value=regmt.Value then continue; | |
528 | + if regg.Index>sels+sell then begin | |
529 | + p:=regg.Index-1; | |
530 | + l:=regg.Length; | |
531 | + break; | |
532 | + end; | |
533 | + end; | |
534 | + if p>=0 then break; | |
535 | + end; | |
536 | + | |
537 | + end else begin | |
538 | + | |
539 | + p:=Text.FindText(fs,sels+sell,Text.Lines.Text.Length-sels,ST); | |
540 | + l:=fs.Length; | |
541 | + | |
542 | + end; | |
543 | + if p>-1 then begin | |
544 | + Text.SelStart:=p; | |
545 | + Text.SelLength:=l; | |
546 | + end; | |
547 | + end; | |
548 | + | |
549 | +end; | |
550 | + | |
551 | +procedure TTextDeFindForm.ReplaceDialogReplace(Sender:TObject); | |
552 | +var | |
553 | + l:Integer; | |
554 | + s:Integer; | |
555 | + R:TReplaceDialog; | |
556 | + ss,fs,rs:string; | |
557 | +begin | |
558 | + R:=ReplaceDialog; | |
559 | + fs:=R.FindText; | |
560 | + rs:=R.ReplaceText; | |
561 | + | |
562 | + repeat | |
563 | + if EnableReplaceReg then begin | |
564 | + | |
565 | + Text.Lines.LineBreak:=LF; | |
566 | + ReplaceDialogFind(Sender); | |
567 | + Text.SelText:=TRegEx.Replace(Text.SelText,fs,rs); | |
568 | + | |
569 | + end else begin | |
570 | + | |
571 | + Text.SelLength:=0; | |
572 | + ReplaceDialogFind(Sender); | |
573 | + if (Text.SelLength>0) then begin | |
574 | + l:=Text.SelLength; | |
575 | + s:=Text.SelStart; | |
576 | + Text.seltext:=R.ReplaceText; | |
577 | + Text.SelStart:=s; | |
578 | + Text.SelLength:=R.ReplaceText.Length; | |
579 | + end; | |
580 | + end; | |
581 | + if not(frReplaceAll in R.Options) then break; | |
582 | + until not((Text.SelLength>0)); | |
583 | + | |
584 | +end; | |
585 | + | |
447 | 586 | function TTextDeFindForm.GiveFeedback(dwEffect:Longint):HResult; |
448 | 587 | begin |
449 | 588 | Result:=DRAGDROP_S_USEDEFAULTCURSORS; |
@@ -481,6 +620,25 @@ begin | ||
481 | 620 | IdHTTP.Disconnect; |
482 | 621 | end; |
483 | 622 | |
623 | +function TTextDeFindForm.tnetdownload(Url:string):string; | |
624 | +var | |
625 | + s:TStringStream; | |
626 | +begin | |
627 | +// IdHTTP.HandleRedirects:=true; | |
628 | +// IdHTTP.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; | |
629 | +// IdHTTP.Request.ContentEncoding := 'UTF-8'; | |
630 | + s:=TStringStream.Create('',TEncoding.UTF8); | |
631 | + try | |
632 | + Url:=TIdURI.ParamsEncode(Url,IndyTextEncoding_UTF8); | |
633 | + NetHTTPRequest.Get(Url, s); | |
634 | + s.Position:=0; | |
635 | + Result:=s.ReadString(s.Size); | |
636 | + finally | |
637 | + FreeAndNil(s); | |
638 | + end; | |
639 | +end; | |
640 | + | |
641 | + | |
484 | 642 | |
485 | 643 | function TTextDeFindForm.getsearchtext(Url:String):String; |
486 | 644 | var |
@@ -521,6 +679,7 @@ var | ||
521 | 679 | row:integer; |
522 | 680 | hit:Integer; |
523 | 681 | hitl:boolean; |
682 | + hitm:boolean; | |
524 | 683 | |
525 | 684 | |
526 | 685 | function rowadd(row:integer):integer; |
@@ -545,6 +704,8 @@ var | ||
545 | 704 | hit:Integer; |
546 | 705 | data:string; |
547 | 706 | artist:string; |
707 | + s:string; | |
708 | + hitm:boolean; | |
548 | 709 | function getval(k:string):string; |
549 | 710 | begin |
550 | 711 | try |
@@ -556,7 +717,7 @@ var | ||
556 | 717 | |
557 | 718 | begin |
558 | 719 | result:=0; |
559 | - data:=iddownload(Url); | |
720 | + data:=tnetdownload(Url); | |
560 | 721 | |
561 | 722 | if OpURLOpenSave.Checked then begin |
562 | 723 | Memo1.Lines.text:=data; |
@@ -571,6 +732,18 @@ var | ||
571 | 732 | artist:=getval('artistName'); |
572 | 733 | if OpURLituneNazo.Checked then |
573 | 734 | if not MatchesMask(artist,getsearchtext(ListName.Text)) then continue; |
735 | + if OpURLituneTitleMatch.Checked then begin | |
736 | + hitm:=true; | |
737 | + for s in getsearchtext(ss).Split([' ']) do begin | |
738 | + if not MatchesMask(getval('trackName'),'*'+s+'*') then begin | |
739 | + hitm:=false; | |
740 | + break; | |
741 | + end; | |
742 | + end; | |
743 | + if not hitm then continue; | |
744 | + | |
745 | + end; | |
746 | + | |
574 | 747 | |
575 | 748 | inc(hit); |
576 | 749 | row:=rowadd(row); |
@@ -1131,6 +1304,11 @@ begin | ||
1131 | 1304 | Result:=hit; |
1132 | 1305 | end; |
1133 | 1306 | |
1307 | + | |
1308 | + | |
1309 | + | |
1310 | + | |
1311 | + | |
1134 | 1312 | procedure TTextDeFindForm.FindClick(Sender:TObject); |
1135 | 1313 | var |
1136 | 1314 | s,ss:string; |