Advertisement
Guest User

Untitled

a guest
May 4th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. unit MyUnit;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, RegularExpressions, StrUtils;
  8.  
  9. type
  10. THauptForm = class(TForm)
  11. Memo1: TMemo;
  12. procedure FormCreate(Sender: TObject);
  13. Function ReplaceCC(Const Match: TMatch): String;
  14. private
  15. { Private-Deklarationen }
  16. public
  17. { Public-Deklarationen }
  18. end;
  19.  
  20. var
  21. HauptForm: THauptForm;
  22. FMatchCollection: TMatchCollection;
  23. FReplaceCounter: Integer;
  24. FAltSql: String;
  25.  
  26. Implementation
  27.  
  28. {$R *.dfm}
  29.  
  30. Function THauptForm.ReplaceCC(Const Match: TMatch): String;
  31. Var
  32. Pc: pChar;
  33. P: Integer;
  34. Begin
  35. Result:=FMatchCollection[FReplaceCounter].Value;
  36. //поиск с конца
  37. Pc:=SearchBuf(pChar(Result), Length(Result), Length(Result)-1, Length(Result), 'from ', []);
  38. If Pc=Nil Then P:=0
  39. Else Begin
  40. P:=Pc-pChar(Result)+1;
  41. While Not(IsCharAlphaNumeric(Result[P-1])) Do
  42. Dec(P);
  43. End;
  44. If P>0 Then Begin
  45. Insert(', (TSystem.Get_PrintSettings('+FMatchCollection[FReplaceCounter].Groups[2].Value+'.dbrid)).*', Result, P);
  46. Inc(FReplaceCounter);
  47. End;
  48. End;
  49.  
  50. Procedure THauptForm.FormCreate(Sender: TObject);
  51. Var
  52. RegEx: TRegEx;
  53. MyEval: TMatchEvaluator;
  54. tStr: TStringList;
  55. Begin
  56. tStr:=TStringList.Create;
  57. tStr.Clear;
  58. tStr.Add('SELECT table1.*, adr1 AS name1, adr2 AS name2, adr3 AS name3,');
  59. tStr.Add('lang1 AS l1,');
  60. tStr.Add('lang_hrtgc_id(belhtrp_mce, current_l()) AS _mengenbezih, lang_artmghrrc_id(belhtrp_mce) AS _mengenisond,');
  61. tStr.Add('lang_hrt_id(belhtrp_mce, current_l()) AS _mengenbezih2, lang_artmghrrc_id(belhtrp_mce) AS _mengenisond2,');
  62. tStr.Add('dbf3g_hrtgc_id(belp_nr, current_l()) AS _artzzzbez,');
  63. tStr.Add('TDlrki.IntToStr(belp_id) AS vhrewter_berz,');
  64. tStr.Add('ks_bks AS belp_ks_bez, er_bez AS belp_konto_bez,');
  65. tStr.Add('CASE WHEN belp_gtyp = ''LFS'' THEN Exists(SELECT true FROM lifschwerg WHERE l_id = belp_id) ELSE FALSE END AS hasCreeeZbg');
  66. tStr.Add('FROM betpos LEFT JOIN ksv ON ks_abt=belp_koslle LEFT JOIN erfdloes ON er_to=belp_ko');
  67. tStr.Add('WHERE belp_id = :betttlegid ORDER BY belp_po');
  68.  
  69. Memo1.Lines.Append(IntToStr(Length(tStr.Text)));
  70. FAltSql:=tStr.Text;
  71.  
  72. RegEx:=TRegEx.Create('(?P<onlyselect>bselects*.*?bfroms*+(?:only)?s*+S++){0}bselects*(?:(?P>onlyselect)|.)*?bfroms*+(?:only)?s*+(S++)', [roIgnoreCase, roSingleLine]);
  73. If RegEx.IsMatch(FAltSql) Then Begin
  74. FReplaceCounter:=0;
  75. FMatchCollection:=RegEx.Matches(FAltSql);
  76. MyEval:=ReplaceCC;
  77. Memo1.Lines.Text:=RegEx.Replace(FAltSql, MyEval);
  78. End;
  79.  
  80. tStr.Free;
  81. End;
  82.  
  83. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement