├── README.md ├── src ├── Fonetiza.Core.pas ├── Fonetiza.Intf.pas ├── Fonetiza.pas ├── Fonetiza.Utils.pas ├── Fonetiza.Consts.pas └── Fonetiza.CodigoFonetico.Core.pas ├── test ├── src │ ├── Fonetiza.Utils.Test.pas │ └── Fonetiza.Core.Test.pas ├── fonetizaTests.dpr └── fonetizaTests.dproj ├── boss-lock.json ├── boss.json ├── samples ├── Samples.dpr ├── src │ ├── Fonetiza.Samples.Main.pas │ └── Fonetiza.Samples.Main.dfm └── Samples.dproj ├── LICENSE └── .gitignore /README.md: -------------------------------------------------------------------------------- 1 | # fonetiza 2 | Gerador de conteúdo fonético em português 3 | -------------------------------------------------------------------------------- /src/Fonetiza.Core.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/fonetiza/HEAD/src/Fonetiza.Core.pas -------------------------------------------------------------------------------- /src/Fonetiza.Intf.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/fonetiza/HEAD/src/Fonetiza.Intf.pas -------------------------------------------------------------------------------- /test/src/Fonetiza.Utils.Test.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/fonetiza/HEAD/test/src/Fonetiza.Utils.Test.pas -------------------------------------------------------------------------------- /boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "d41d8cd98f00b204e9800998ecf8427e", 3 | "updated": "2021-12-23T10:24:18.9075953-03:00", 4 | "installedModules": {} 5 | } -------------------------------------------------------------------------------- /boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fonetiza", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./src", 7 | "projects": [], 8 | "dependencies": {} 9 | } -------------------------------------------------------------------------------- /test/fonetizaTests.dpr: -------------------------------------------------------------------------------- 1 | program fonetizaTests; 2 | 3 | {$IFDEF CONSOLE_TESTRUNNER} 4 | {$APPTYPE CONSOLE} 5 | {$ENDIF} 6 | 7 | uses 8 | DUnitTestRunner, 9 | Fonetiza.Utils.Test in 'src\Fonetiza.Utils.Test.pas', 10 | Fonetiza.Core.Test in 'src\Fonetiza.Core.Test.pas', 11 | Fonetiza.CodigoFonetico.Core in '..\src\Fonetiza.CodigoFonetico.Core.pas', 12 | Fonetiza.Consts in '..\src\Fonetiza.Consts.pas', 13 | Fonetiza.Core in '..\src\Fonetiza.Core.pas', 14 | Fonetiza.Intf in '..\src\Fonetiza.Intf.pas', 15 | Fonetiza in '..\src\Fonetiza.pas', 16 | Fonetiza.Utils in '..\src\Fonetiza.Utils.pas'; 17 | 18 | {$R *.RES} 19 | 20 | begin 21 | DUnitTestRunner.RunRegisteredTests; 22 | end. 23 | 24 | -------------------------------------------------------------------------------- /samples/Samples.dpr: -------------------------------------------------------------------------------- 1 | program Samples; 2 | 3 | uses 4 | Vcl.Forms, 5 | Fonetiza.Utils in '..\src\Fonetiza.Utils.pas', 6 | Fonetiza.Intf in '..\src\Fonetiza.Intf.pas', 7 | Fonetiza.Consts in '..\src\Fonetiza.Consts.pas', 8 | Fonetiza.Samples.Main in 'src\Fonetiza.Samples.Main.pas' {FrmMain}, 9 | Fonetiza in '..\src\Fonetiza.pas', 10 | Fonetiza.Core in '..\src\Fonetiza.Core.pas', 11 | Fonetiza.CodigoFonetico.Core in '..\src\Fonetiza.CodigoFonetico.Core.pas'; 12 | 13 | {$R *.res} 14 | 15 | begin 16 | ReportMemoryLeaksOnShutdown := True; 17 | Application.Initialize; 18 | Application.MainFormOnTaskbar := True; 19 | Application.CreateForm(TFrmMain, FrmMain); 20 | Application.Run; 21 | end. 22 | -------------------------------------------------------------------------------- /test/src/Fonetiza.Core.Test.pas: -------------------------------------------------------------------------------- 1 | unit Fonetiza.Core.Test; 2 | 3 | interface 4 | 5 | uses TestFramework, System.SysUtils, Fonetiza.Core; 6 | 7 | type 8 | TTestFonetizaCore = class(TTestCase) 9 | strict private 10 | FFonetizaCore: TFonetizaCore; 11 | public 12 | procedure SetUp; override; 13 | procedure TearDown; override; 14 | published 15 | procedure TestGerarConteudoFonetico; 16 | end; 17 | 18 | implementation 19 | 20 | procedure TTestFonetizaCore.SetUp; 21 | begin 22 | FFonetizaCore := TFonetizaCore.Create; 23 | end; 24 | 25 | procedure TTestFonetizaCore.TearDown; 26 | begin 27 | FFonetizaCore.Free; 28 | FFonetizaCore := nil; 29 | end; 30 | 31 | procedure TTestFonetizaCore.TestGerarConteudoFonetico; 32 | begin 33 | CheckEquals('GIUZI', FFonetizaCore.GerarConteudoFonetico('JOSE')); 34 | CheckEquals('KARLU', FFonetizaCore.GerarConteudoFonetico('CARLOS')); 35 | end; 36 | 37 | initialization 38 | RegisterTest(TTestFonetizaCore.Suite); 39 | 40 | end. 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Vinicius Sanchez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /samples/src/Fonetiza.Samples.Main.pas: -------------------------------------------------------------------------------- 1 | unit Fonetiza.Samples.Main; 2 | 3 | interface 4 | 5 | uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, 6 | Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; 7 | 8 | type 9 | TFrmMain = class(TForm) 10 | Panel1: TPanel; 11 | Panel2: TPanel; 12 | Label1: TLabel; 13 | Label2: TLabel; 14 | edtConteudo: TEdit; 15 | btnFonetizar: TButton; 16 | mmResultadoFonetico: TMemo; 17 | btnCodigoFonetico: TButton; 18 | btnListaCodigoFonetico: TButton; 19 | procedure btnFonetizarClick(Sender: TObject); 20 | procedure btnCodigoFoneticoClick(Sender: TObject); 21 | procedure btnListaCodigoFoneticoClick(Sender: TObject); 22 | end; 23 | 24 | var 25 | FrmMain: TFrmMain; 26 | 27 | implementation 28 | 29 | {$R *.dfm} 30 | 31 | uses Fonetiza; 32 | 33 | procedure TFrmMain.btnCodigoFoneticoClick(Sender: TObject); 34 | begin 35 | mmResultadoFonetico.Lines.Add(TFonetiza.New.GerarCodigoFonetico(edtConteudo.Text)); 36 | end; 37 | 38 | procedure TFrmMain.btnFonetizarClick(Sender: TObject); 39 | begin 40 | mmResultadoFonetico.Lines.Add(edtConteudo.Text + ' > ' + TFonetiza.New.Fonetizar(edtConteudo.Text)); 41 | end; 42 | 43 | procedure TFrmMain.btnListaCodigoFoneticoClick(Sender: TObject); 44 | var 45 | LCodigo: string; 46 | LCodigos: TArray; 47 | begin 48 | LCodigos := TFonetiza.New.GerarListaCodigosFoneticos(edtConteudo.Text); 49 | for LCodigo in LCodigos do 50 | mmResultadoFonetico.Lines.Add(LCodigo); 51 | end; 52 | 53 | end. 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | *.res 7 | 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | -------------------------------------------------------------------------------- /src/Fonetiza.pas: -------------------------------------------------------------------------------- 1 | unit Fonetiza; 2 | 3 | interface 4 | 5 | uses Fonetiza.Intf, Fonetiza.Core, Fonetiza.Utils, Fonetiza.CodigoFonetico.Core; 6 | 7 | type 8 | TFonetiza = class(TInterfacedObject, IFonetiza) 9 | private 10 | FFonetizaCore: TFonetizaCore; 11 | FCodigoFonetico: TCodigoFoneticoCore; 12 | FFonetizaUtils: TFonetizaUtils; 13 | { IFonetiza } 14 | function Fonetizar(const AValue: string): string; 15 | function GerarCodigoFonetico(const AValue: string): string; 16 | function GerarListaCodigosFoneticos(const AValue: string): TArray; 17 | public 18 | constructor Create; 19 | class function New: IFonetiza; 20 | destructor Destroy; override; 21 | end; 22 | 23 | implementation 24 | 25 | { TFonetiza } 26 | 27 | uses System.SysUtils, Fonetiza.Consts; 28 | 29 | constructor TFonetiza.Create; 30 | begin 31 | FFonetizaCore := TFonetizaCore.Create; 32 | FCodigoFonetico := TCodigoFoneticoCore.Create; 33 | FFonetizaUtils := TFonetizaUtils.Create; 34 | end; 35 | 36 | destructor TFonetiza.Destroy; 37 | begin 38 | if Assigned(FFonetizaCore) then 39 | FFonetizaCore.Free; 40 | if Assigned(FCodigoFonetico) then 41 | FCodigoFonetico.Free; 42 | if Assigned(FFonetizaUtils) then 43 | FFonetizaUtils.Free; 44 | inherited; 45 | end; 46 | 47 | function TFonetiza.Fonetizar(const AValue: string): string; 48 | begin 49 | Result := AValue.Trim.ToUpper; 50 | Result := FFonetizaUtils.RemoverAcentuacoes(Result); 51 | Result := FFonetizaUtils.RemoverCaracteresEspeciais(Result); 52 | Result := FFonetizaUtils.RemoverConteudos(Result, PREPOSICOES); 53 | Result := FFonetizaUtils.RemoverConteudos(Result, TITULOS); 54 | Result := FFonetizaUtils.SubstituirConteudos(Result, LETRAS); 55 | Result := FFonetizaUtils.SubstituirConteudos(Result, NUMEROS); 56 | Result := FFonetizaUtils.SomarCaracteres(Result); 57 | Result := FFonetizaUtils.RemoverCaracteresDuplicados(Result); 58 | Result := FFonetizaCore.GerarConteudoFonetico(Result); 59 | Result := FFonetizaUtils.RemoverCaracteresDuplicados(Result); 60 | Result := FFonetizaUtils.SubstituirConteudos(Result, NOMES); 61 | Result := FFonetizaUtils.SubstituirConteudos(Result, SINONIMOS); 62 | end; 63 | 64 | function TFonetiza.GerarCodigoFonetico(const AValue: string): string; 65 | begin 66 | Result := Self.Fonetizar(AValue); 67 | Result := FCodigoFonetico.randomize(Result); 68 | end; 69 | 70 | function TFonetiza.GerarListaCodigosFoneticos(const AValue: string): TArray; 71 | var 72 | LConteudoFonetico: string; 73 | begin 74 | LConteudoFonetico := Self.Fonetizar(AValue); 75 | Result := FCodigoFonetico.generateCodes(LConteudoFonetico); 76 | end; 77 | 78 | class function TFonetiza.New: IFonetiza; 79 | begin 80 | Result := Self.Create; 81 | end; 82 | 83 | end. 84 | -------------------------------------------------------------------------------- /samples/src/Fonetiza.Samples.Main.dfm: -------------------------------------------------------------------------------- 1 | object FrmMain: TFrmMain 2 | Left = 0 3 | Top = 0 4 | Caption = 'Fonetiza' 5 | ClientHeight = 299 6 | ClientWidth = 619 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | Position = poMainFormCenter 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object Panel1: TPanel 18 | Left = 0 19 | Top = 0 20 | Width = 619 21 | Height = 25 22 | Align = alTop 23 | Alignment = taLeftJustify 24 | BevelOuter = bvNone 25 | Caption = ' Exemplo' 26 | Color = 7048009 27 | Font.Charset = DEFAULT_CHARSET 28 | Font.Color = clWhite 29 | Font.Height = -12 30 | Font.Name = 'Segoe UI' 31 | Font.Style = [fsBold] 32 | ParentBackground = False 33 | ParentFont = False 34 | TabOrder = 0 35 | end 36 | object Panel2: TPanel 37 | Left = 0 38 | Top = 25 39 | Width = 619 40 | Height = 274 41 | Align = alClient 42 | BevelOuter = bvNone 43 | ParentBackground = False 44 | TabOrder = 1 45 | DesignSize = ( 46 | 619 47 | 274) 48 | object Label1: TLabel 49 | Left = 13 50 | Top = 10 51 | Width = 57 52 | Height = 15 53 | Caption = 'Conte'#250'do:' 54 | Color = 16157516 55 | Font.Charset = DEFAULT_CHARSET 56 | Font.Color = 5592405 57 | Font.Height = -12 58 | Font.Name = 'Segoe UI' 59 | Font.Style = [fsBold] 60 | ParentColor = False 61 | ParentFont = False 62 | end 63 | object Label2: TLabel 64 | Left = 13 65 | Top = 61 66 | Width = 108 67 | Height = 15 68 | Caption = 'Resultado fon'#233'tico:' 69 | Color = 16157516 70 | Font.Charset = DEFAULT_CHARSET 71 | Font.Color = 5592405 72 | Font.Height = -12 73 | Font.Name = 'Segoe UI' 74 | Font.Style = [fsBold] 75 | ParentColor = False 76 | ParentFont = False 77 | end 78 | object edtConteudo: TEdit 79 | Left = 13 80 | Top = 31 81 | Width = 233 82 | Height = 21 83 | TabOrder = 0 84 | TextHint = 'Informe o conte'#250'do para fonetizar' 85 | end 86 | object btnFonetizar: TButton 87 | Left = 252 88 | Top = 29 89 | Width = 75 90 | Height = 25 91 | Caption = 'Fonetizar' 92 | Font.Charset = DEFAULT_CHARSET 93 | Font.Color = clWindowText 94 | Font.Height = -12 95 | Font.Name = 'Segoe UI' 96 | Font.Style = [] 97 | ParentFont = False 98 | TabOrder = 1 99 | OnClick = btnFonetizarClick 100 | end 101 | object mmResultadoFonetico: TMemo 102 | Left = 13 103 | Top = 82 104 | Width = 596 105 | Height = 183 106 | Anchors = [akLeft, akTop, akRight, akBottom] 107 | ScrollBars = ssVertical 108 | TabOrder = 2 109 | end 110 | object btnCodigoFonetico: TButton 111 | Left = 333 112 | Top = 29 113 | Width = 108 114 | Height = 25 115 | Caption = 'C'#243'digo Fon'#233'tico' 116 | Font.Charset = DEFAULT_CHARSET 117 | Font.Color = clWindowText 118 | Font.Height = -12 119 | Font.Name = 'Segoe UI' 120 | Font.Style = [] 121 | ParentFont = False 122 | TabOrder = 3 123 | OnClick = btnCodigoFoneticoClick 124 | end 125 | object btnListaCodigoFonetico: TButton 126 | Left = 447 127 | Top = 29 128 | Width = 162 129 | Height = 25 130 | Caption = 'Lista de C'#243'digos Fon'#233'ticos' 131 | Font.Charset = DEFAULT_CHARSET 132 | Font.Color = clWindowText 133 | Font.Height = -12 134 | Font.Name = 'Segoe UI' 135 | Font.Style = [] 136 | ParentFont = False 137 | TabOrder = 4 138 | OnClick = btnListaCodigoFoneticoClick 139 | end 140 | end 141 | end 142 | -------------------------------------------------------------------------------- /src/Fonetiza.Utils.pas: -------------------------------------------------------------------------------- 1 | unit Fonetiza.Utils; 2 | 3 | interface 4 | 5 | type 6 | TFonetizaUtils = class 7 | public 8 | function SomarCaracteres(const AValue: string): string; 9 | function SubstituirConteudos(const AValue: string; const AConteudo: TArray>): string; 10 | function RemoverCaracteresDuplicados(const AValue: string): string; 11 | function RemoverCaracteresEspeciais(const AValue: string): string; 12 | function RemoverConteudos(const AValue: string; const AConteudo: TArray): string; 13 | function RemoverAcentuacoes(const AValue: string): string; 14 | end; 15 | 16 | implementation 17 | 18 | { TFonetizaUtils } 19 | 20 | uses System.StrUtils, System.SysUtils, System.Generics.Collections; 21 | 22 | function TFonetizaUtils.RemoverAcentuacoes(const AValue: string): string; 23 | type 24 | USAscii20127 = type AnsiString(20127); 25 | begin 26 | Result := string(USAscii20127(AValue)); 27 | end; 28 | 29 | function TFonetizaUtils.RemoverCaracteresDuplicados(const AValue: string): string; 30 | var 31 | I: Integer; 32 | LChar: Char; 33 | begin 34 | LChar := ' '; 35 | for I := 1 to AValue.Length do 36 | begin 37 | if ((AValue[I] <> LChar) or (AValue[I] = ' ') or ((AValue[I] >= '0') and (AValue[I] <= '9')) or ((AValue[I] = 'S') and (AValue[I - 1] = 'S') and ((I > 1) and (AValue[I - 2] <> 'S')))) then 38 | Result := Result + AValue[I]; 39 | LChar := AValue[I]; 40 | end; 41 | Result := Result.Trim; 42 | end; 43 | 44 | function TFonetizaUtils.RemoverCaracteresEspeciais(const AValue: string): string; 45 | var 46 | LCaracter: Char; 47 | begin 48 | for LCaracter in AValue do 49 | if CharInSet(LCaracter, ['A' .. 'Z', '0' .. '9']) or (LCaracter = ' ') or (LCaracter = '_') or (LCaracter = '&') then 50 | Result := Result + LCaracter; 51 | end; 52 | 53 | function TFonetizaUtils.RemoverConteudos(const AValue: string; const AConteudo: TArray): string; 54 | var 55 | LPalavra: string; 56 | LPalavras: TArray; 57 | begin 58 | LPalavras := AValue.Split([' ']); 59 | for LPalavra in LPalavras do 60 | begin 61 | if MatchStr(LPalavra, AConteudo) then 62 | Continue; 63 | if not Result.Trim.IsEmpty then 64 | Result := Result + ' '; 65 | Result := Result + LPalavra; 66 | end; 67 | end; 68 | 69 | function TFonetizaUtils.SomarCaracteres(const AValue: string): string; 70 | var 71 | LSoma, LValor: Integer; 72 | LPalavras: TList; 73 | LPalavra: string; 74 | I: Integer; 75 | begin 76 | I := 0; 77 | LSoma := 0; 78 | LPalavras := TList.Create(); 79 | try 80 | LPalavras.AddRange(AValue.Split([' '])); 81 | while I < LPalavras.Count do 82 | begin 83 | LPalavra := LPalavras.Items[I]; 84 | if LPalavra.Equals('E') then 85 | begin 86 | LPalavras.Delete(I); 87 | Dec(I); 88 | end 89 | else 90 | begin 91 | if LPalavra.Equals('MIL') then 92 | begin 93 | if LSoma = 0 then 94 | LSoma := 1000 95 | else 96 | begin 97 | LSoma := LSoma * 1000; 98 | LPalavras.Delete(I); 99 | Dec(I); 100 | end; 101 | end 102 | else 103 | begin 104 | LValor := StrToIntDef(LPalavra, 0); 105 | if LValor <> 0 then 106 | begin 107 | if LSoma <> 0 then 108 | begin 109 | LPalavras.Delete(I - 1); 110 | Dec(I); 111 | end; 112 | LSoma := LSoma + LValor; 113 | end 114 | else 115 | begin 116 | if LSoma <> 0 then 117 | LPalavras.Items[I - 1] := LSoma.ToString; 118 | LSoma := 0; 119 | end; 120 | end; 121 | end; 122 | Inc(I); 123 | end; 124 | if LSoma <> 0 then 125 | LPalavras.Items[Pred(LPalavras.Count)] := LSoma.ToString; 126 | for LPalavra in LPalavras do 127 | begin 128 | if not Result.IsEmpty then 129 | Result := Result + ' '; 130 | Result := Result + LPalavra; 131 | end; 132 | finally 133 | LPalavras.Free; 134 | end; 135 | end; 136 | 137 | function TFonetizaUtils.SubstituirConteudos(const AValue: string; const AConteudo: TArray>): string; 138 | var 139 | LPalavra, LResultado: string; 140 | LConteudo, LPalavras: TArray; 141 | begin 142 | LPalavras := AValue.Split([' ']); 143 | for LPalavra in LPalavras do 144 | begin 145 | LResultado := LPalavra; 146 | for LConteudo in AConteudo do 147 | begin 148 | if LConteudo[0].Equals(LPalavra) then 149 | begin 150 | LResultado := LConteudo[1]; 151 | Break; 152 | end; 153 | end; 154 | if not Result.Trim.IsEmpty then 155 | Result := Result + ' '; 156 | Result := Result + LResultado; 157 | end; 158 | end; 159 | 160 | end. 161 | -------------------------------------------------------------------------------- /src/Fonetiza.Consts.pas: -------------------------------------------------------------------------------- 1 | unit Fonetiza.Consts; 2 | 3 | interface 4 | 5 | const 6 | PREPOSICOES: TArray = ['DEL', 'DA', 'DE', 'DI', 'DO', 'DU', 'DAS', 'DOS', 'DEU', 'DER', 'E', 'LA', 'LE', 'LES', 'LOS', 7 | 'VAN', 'VON', 'EL']; 8 | 9 | TITULOS: TArray = ['BEL', 'CEL', 'ENG', 'MAJ', 'PROF', 'MIN', 'TEN', 'CAP', 'DR', 'DRA', 'GAL', 'GEN', 'MED', 'PE', 10 | 'SARG', 'SGT', 'VVA', 'SR', 'SRA', 'MSC', 'CB', 'SD', 'SEN', 'BACHAREL', 'CORONEL', 'ENGENHEIRO', 'PROFESSOR', 'PROFESSORA', 11 | 'MINISTRO', 'TENENTE', 'DOUTOR', 'DOUTORA', 'GENERAL', 'MEDICO', 'PADRE', 'SARGENTO', 'CABO', 'SOLDADO', 'DEP', 'PASTOR', 12 | 'PASTORA', 'MESTRE', 'OFICIAL', 'PRESIDENTE', 'VEREADOR']; 13 | 14 | LETRAS: TArray> = [['AGA', 'H'], ['BE', 'B'], ['CA', 'K'], ['CE', 'C'], ['DABLIU', 'W'], ['EFE', 'F'], 15 | ['ELE', 'L'], ['EME', 'M'], ['ENE', 'N'], ['ERRE', 'R'], ['ESSE', 'S'], ['GE', 'G'], ['IPSILOM', 'Y'], ['IPSILON', 'Y'], 16 | ['JOTA', 'J'], ['PE', 'P'], ['QUE', 'Q'], ['TE', 'T'], ['VE', 'V'], ['XIS', 'X'], ['ZE', 'Z']]; 17 | 18 | NUMEROS: TArray> = [['CATORZE', '0014'], ['CEM', '0100'], ['CENTO', '0100'], ['CINCO', '0005'], 19 | ['CINCOENTA', '0050'], ['CINQUENTA', '0050'], ['DEZ', '0010'], ['DEZENOVE', '0019'], ['DEZESSEIS', '0016'], 20 | ['DEZESSETE', '0017'], ['DEZOITO', '0018'], ['DOIS', '0002'], ['DOZE', '0012'], ['DUZENTOS', '0200'], ['HUM', '0001'], 21 | ['NOVE', '0009'], ['NOVECENTOS', '0900'], ['NOVENTA', '0090'], ['OITENTA', '0080'], ['OITO', '0008'], ['OITOCENTOS', '0800'], 22 | ['ONZE', '0011'], ['QUARENTA', '0040'], ['QUATORZE', '0014'], ['QUATRO', '0004'], ['QUATROCENTOS', '0400'], 23 | ['QUINHENTOS', '0500'], ['QUINZE', '0015'], ['SEICENTOS', '0600'], ['SEIS', '0006'], ['SEISCENTOS', '0600'], 24 | ['SEISENTOS', '0600'], ['SESSENTA', '0060'], ['SETE', '0007'], ['SETECENTOS', '0700'], ['SETENTA', '0070'], ['TREIS', '0003'], 25 | ['TRES', '0003'], ['TRESENTOS', '0300'], ['TREZ', '0003'], ['TREZE', '0013'], ['TREZENTOS', '0300'], ['TRINTA', '0030'], 26 | ['UM', '0001'], ['VINTE', '0020'], ['ZERO', '0000'], ['I', '0001'], ['II', '0002'], ['III', '0003'], ['IV', '0004'], 27 | ['IX', '0009'], ['V', '0005'], ['VI', '0006'], ['VII', '0007'], ['VIII', '0008'], ['X', '0010'], ['XI', '0011'], 28 | ['XII', '0012'], ['XIII', '0013'], ['XIV', '0014'], ['XIX', '0019'], ['XV', '0015'], ['XVI', '0016'], ['XVII', '0017'], 29 | ['XVIII', '0018'], ['XX', '0020'], ['XXI', '0021'], ['XXII', '0022'], ['XXIII', '0023'], ['XXIV', '0024'], ['XXIX', '0029'], 30 | ['XXV', '0025'], ['XXVI', '0026'], ['XXVII', '0027'], ['XXVIII', '0028'], ['XXX', '0030'], ['XXXI', '0031']]; 31 | 32 | NOMES: TArray> = [['ABRA', 'ABRAU'], ['ADRIANI', 'ADRIANA'], ['AIAKI', 'AIAXI'], ['ANI', 'AGINI'], 33 | ['AXILI', 'AKILI'], ['BAPITISTA', 'BATISTA'], ['BRIKUPIFI', 'BRIKUFI'], ['BRITAUPITI', 'BRITAUFI'], ['BRITAUTI', 'BRITAUFI'], 34 | ['BRITIKUFI', 'BRIKUFI'], ['BRITIKUPIFI', 'BRIKUFI'], ['DABADIA', 'BADIA'], ['DABUITI', 'BUITI'], ['DAGRANGIA', 'GRANGIA'], 35 | ['DAKANPURA', 'KANPURA'], ['DALA', 'LA'], ['DAMARIU', 'MARIU'], ['DANUVA', 'NUVA'], ['DARI', 'RI'], ['DARUI', 'RUI'], 36 | ['DATIRA', 'TIRA'], ['DAVIDI', 'DAVI'], ['DIBARBA', 'BARBA'], ['DIBASTIANI', 'BASTIANI'], ['DIBIAZI', 'BIAZI'], 37 | ['DIBILA', 'BILA'], ['DIBITIU', 'BITIU'], ['DIBUNA', 'BUNA'], ['DIBURTULI', 'BURTULI'], ['DIFRIN', 'FRIN'], 38 | ['DIFRITA', 'FRITA'], ['DIGASPIRI', 'GASPIRI'], ['DIGRIGURIU', 'GRIGURIU'], ['DIKARLI', 'KARLI'], ['DIKU', 'KU'], 39 | ['DILUKA', 'LUKA'], ['DILURDI', 'LURDI'], ['DIMARIA', 'MARIA'], ['DIMARIU', 'MARIU'], ['DIMARKI', 'MARKI'], 40 | ['DIMARKU', 'MARKU'], ['DIMARTINI', 'MARTINI'], ['DIMILU', 'MILU'], ['DIMIRANDA', 'MIRANDA'], ['DIMURA', 'MURA'], 41 | ['DINARDI', 'NARDI'], ['DINUNI', 'NUNI'], ['DIPAIVA', 'PAIVA'], ['DIPARI', 'PARI'], ['DIPIRI', 'PIRI'], ['DIRIN', 'RIN'], 42 | ['DIRIU', 'RIU'], ['DIRUSI', 'RUSI'], ['DISIZARI', 'SIZARI'], ['DISTIFANI', 'ISTIFANI'], ['DITUFU', 'TUFU'], 43 | ['DITUNI', 'TUNI'], ['DUVALI', 'UALI'], ['FABIANI', 'FABIANA'], ['GABRILI', 'GABRILA'], ['GIAKIKI', 'GIAKI'], 44 | ['GIAKUBI', 'GIAKU'], ['GIUAXIN', 'GIUAKIN'], ['GUAKU', 'GUASU'], ['ILIANI', 'ILIANA'], ['INISI', 'NS'], 45 | ['ISXAIFIR', 'XIFIR'], ['ISXIFIR', 'XIFIR'], ['ISXINATU', 'ISKINATU'], ['KRISTIANI', 'KRISTIANA'], ['KRUGIR', 'KRIGIR'], 46 | ['KRUIGIR', 'KRIGIR'], ['KUR', 'KURTI'], ['KUXIRANI', 'KUKRANI'], ['LUSIANI', 'LUSIANA'], ['MAGIDALINA', 'MADALINA'], 47 | ['MUILIR', 'MILIR'], ['MULIR', 'MILIR'], ['NIVITUN', 'NIUTUN'], ['PASTIR', 'PASTIUR'], ['RAXIU', 'RAKIU'], 48 | ['RUZANI', 'RUZANA'], ['TAXINARDI', 'TAKINARDI'], ['TATIANI', 'TATIANA'], ['TIKIRA', 'TIXIRA'], ['UI', 'UAI'], 49 | ['UXINTUN', 'UAXINTUN'], ['XIMITI', 'XIMIDITI'], ['XINAIDIR', 'XINIDIR'], ['XIRISTIA', 'KRISTIA'], 50 | ['XIRISTIANA', 'KRISTIANA'], ['XIRISTIANI', 'KRISTIANA'], ['XIRISTINA', 'KRISTINA'], ['XIRISTINI', 'KRISTINI'], 51 | ['XIRUIDIR', 'XIRUDIR']]; 52 | 53 | SINONIMOS: TArray> = [['ABATIDURU', 'AVI'], ['ANBULATURIU', 'USPITAU'], ['ARKIDIUSIZI', 'IGRIGIA'], 54 | ['ARMADUR', 'FUNIRARIA'], ['AVIARIU', 'AVI'], ['AVIKULA', 'AVI'], ['BATALIAU', 'MILITAR'], ['BIRKARIU', 'KRIKI'], 55 | ['BRIGADA', 'MILITAR'], ['BUTIKI', 'MUDA'], ['DIUSIZI', 'IGRIGIA'], ['DIZINSITIZADUR', 'DIDITIZAKAU'], 56 | ['FAKUDADI', 'UNIVERSIDADI'], ['FIANBRIRIA', 'AKUGI'], ['FIRTILIZANTI', 'ADUBU'], ['FUTUKUPIA', 'KUPIA'], 57 | ['GIARDINAGIN', 'FLURIKUTURA'], ['GINASTIKA', 'AKADIMIA'], ['GINAZIU', 'ISKULA'], ['GRANGIA', 'AVI'], ['IDITURA', 'LIVRARIA'], 58 | ['INFURMATIKA', 'KUNPUTADUR'], ['INGARAFADUR', 'BIBIDA'], ['INKURPURADUR', 'KUNSTRUKAU'], ['ISPRISU', 'TRANSPURTADUR'], 59 | ['ISTASIUNAMINTU', 'GARAGI'], ['ISTITIKA', 'AKADIMIA'], ['IZIRSITU', 'MILITAR'], ['KAFI', 'LANXUNITI'], 60 | ['KANTINA', 'RISTAURANTI'], ['KARGA', 'TRANSPURTADUR'], ['KARNI', 'AKUGI'], ['KLINIKA', 'USPITAU'], ['KUARTIU', 'MILITAR'], 61 | ['KULIGIU', 'ISKULA'], ['KUNFIKAU', 'MUDA'], ['KURSU', 'ISKULA'], ['KURTINA', 'DIKURAKAU'], ['LANXIRIA', 'LANXUNITI'], 62 | ['LUTIAMINTU', 'KUNSTRUKAU'], ['MAGAZINI', 'MUDA'], ['MARSINARIA', 'MUVIU'], ['MATIRNAU', 'KRIKI'], ['MITALURGIKA', 'AKU'], 63 | ['MITAU', 'AKU'], ['MUTIU', 'UTIU'], ['PAPILARIA', 'LIVRARIA'], ['PARUKIA', 'IGRIGIA'], ['PIZARIA', 'RISTAURANTI'], 64 | ['PULISIA', 'MILITAR'], ['PULISIAU', 'MILITAR'], ['RIFRIGIRANTI', 'BIBIDA'], ['RIGIMINTU', 'MILITAR'], 65 | ['RILUGIUARIA', 'GIUALIRIA'], ['SANTUARIU', 'IGRIGIA'], ['SIRIALISTA', 'SIRIAI'], ['SIRVIGIARIA', 'BIBIDA'], 66 | ['SUPLITIVU', 'ISKULA'], ['TAPIKARIA', 'DIKURAKAU'], ['TAPITI', 'DIKURAKAU'], ['TIPUGRAFIA', 'GRAFIKA'], ['UIAKAU', 'UNIBU'], 67 | ['UINIU', 'BIBIDA'], ['UISTUARIU', 'MUDA'], ['XAPA', 'AKU'], ['XIRUKUPIA', 'KUPIA'], ['PAU', 'PADARIA'], 68 | ['XURASKARIA', 'RISTAURANTI']]; 69 | 70 | implementation 71 | 72 | end. 73 | -------------------------------------------------------------------------------- /src/Fonetiza.CodigoFonetico.Core.pas: -------------------------------------------------------------------------------- 1 | unit Fonetiza.CodigoFonetico.Core; 2 | 3 | interface 4 | 5 | uses System.SysUtils; 6 | 7 | type 8 | TCodigoFoneticoCore = class 9 | public 10 | function removeElement(var pArray: TArray; const pIndex: integer): boolean; 11 | function fonreg(const i03: Int64): TCharArray; 12 | function tabNor(const str: string): string; 13 | function tabEbc(const str: string): string; 14 | function randomic(const str: string): Int64; 15 | function randomize(const str: string): string; 16 | function generateCodes(const str: string): TArray; 17 | function permutations(const size: Integer): TArray>; 18 | function allPermutations: TArray>>; 19 | end; 20 | 21 | implementation 22 | 23 | uses System.Classes, System.Math; 24 | 25 | { TCodigoFoneticoCore } 26 | 27 | const 28 | powersOfTwo: TArray = [1, 2, 4, 8, 16, 32]; 29 | 30 | function TCodigoFoneticoCore.allPermutations: TArray>>; 31 | begin 32 | Result := [permutations(1), permutations(2), permutations(3), permutations(4), permutations(5)]; 33 | end; 34 | 35 | function TCodigoFoneticoCore.fonreg(const i03: Int64): TCharArray; 36 | var 37 | i01, i02: Int64; 38 | fonaux: TCharArray; 39 | begin 40 | SetLength(fonaux, 4); 41 | i02 := i03; 42 | fonaux[3] := char(i02 mod $0100); 43 | i01 := (i02 - Ord(fonaux[3])) div $0100; 44 | fonaux[2] := char(i01 mod $0100); 45 | i02 := (i01 - Ord(fonaux[2])) div $0100; 46 | fonaux[1] := char(i02 mod $0100); 47 | i01 := (i02 - Ord(fonaux[1])) div $0100; 48 | fonaux[0] := char(i01 mod $0100); 49 | Result := fonaux; 50 | end; 51 | 52 | function TCodigoFoneticoCore.permutations(const size: Integer): TArray>; 53 | var 54 | i, j: integer; 55 | begin 56 | if size > 5 then 57 | raise Exception.Create('Invalid argument. size must be <= 5'); 58 | 59 | SetLength(Result, Pred(powersOfTwo[size]), size); 60 | 61 | for i := 0 to Pred(Length(Result)) do 62 | for j := 0 to Pred(size) do 63 | result[i][j] := ((i + 1) and powersOfTwo[j]) > 0; 64 | end; 65 | 66 | function TCodigoFoneticoCore.removeElement(var pArray: TArray; const pIndex: integer): boolean; 67 | var 68 | i :integer; 69 | begin 70 | Result := (pIndex <= High(pArray)) and (pIndex >= Low(pArray)); 71 | 72 | if not Result then 73 | raise EListError.Create(Format('List index is out of bounds (%s).', [pIndex])) 74 | else 75 | begin 76 | for i := pIndex to Pred(High(pArray)) do 77 | pArray[i] := pArray[i + 1]; 78 | 79 | SetLength(pArray, Pred(Length(pArray))); 80 | Result := True; 81 | end; 82 | end; 83 | 84 | function TCodigoFoneticoCore.generateCodes(const str: string): TArray; 85 | var 86 | i, j, size, index: Integer; 87 | return: TStringList; 88 | palavras, subPalavras: TArray; 89 | permutations: TArray>; 90 | palavra, subNome: string; 91 | begin 92 | palavras := str.Split([' ']); 93 | return := TStringList.Create; 94 | try 95 | if Length(palavras) > 5 then 96 | return.add(Self.randomize(str)); // adiciona o nome completo, mesmo grandao 97 | 98 | while Length(palavras) > 5 do 99 | begin 100 | index := Length(palavras) div 2; 101 | palavra := palavras[index]; 102 | removeElement(palavras, index); // remove um nome do meio 103 | return.add(Self.randomize(palavra)); // adiciona o codigo da palavra removida 104 | end; 105 | 106 | size := Length(palavras); 107 | permutations := allPermutations[IfThen(size = 0, 0, Pred(size))]; 108 | 109 | for i := 0 to Pred(Length(permutations)) do 110 | begin 111 | SetLength(subPalavras, 0); 112 | 113 | for j := 0 to Pred(size) do 114 | begin 115 | if permutations[i][j] then 116 | begin 117 | SetLength(subPalavras, Succ(Length(subPalavras))); 118 | subPalavras[Pred(Length(subPalavras))] := palavras[j]; 119 | end; 120 | end; 121 | 122 | subNome := EmptyStr; 123 | for palavra in subPalavras do 124 | begin 125 | if not subNome.Trim.IsEmpty then 126 | subNome := subNome + ' '; 127 | subNome := subNome + palavra; 128 | end; 129 | 130 | return.add(Self.randomize(subNome)); 131 | end; 132 | 133 | SetLength(Result, return.Count); 134 | for I := 0 to Pred(return.Count) do 135 | Result[I] := return[I]; 136 | finally 137 | return.Free; 138 | end; 139 | end; 140 | 141 | function TCodigoFoneticoCore.randomic(const str: string): Int64; 142 | var 143 | i: integer; 144 | i01, i02: Int64; 145 | fonaux: TCharArray; 146 | begin 147 | SetLength(fonaux, 256); 148 | 149 | if str.Length > 1 then 150 | begin 151 | fonaux := str.ToCharArray; 152 | i01 := (Ord(fonaux[0]) * $0100) + Ord(fonaux[1]); 153 | 154 | for i := 1 to 255 do 155 | begin 156 | if i = Pred(str.Length) then 157 | Break; 158 | 159 | i02 := (Ord(fonaux[i]) * $0100) + Ord(fonaux[i + 1]); 160 | i01 := i01 * i02; 161 | i01 := i01 shr 8; 162 | end; 163 | end 164 | else 165 | begin 166 | fonaux := str.ToCharArray; 167 | i01 := Ord(fonaux[0]) * $0100; 168 | i01 := i01 shr 8; 169 | end; 170 | 171 | Result := i01; 172 | end; 173 | 174 | function TCodigoFoneticoCore.randomize(const str: string): string; 175 | var 176 | lchar: char; 177 | w0, w1: Integer; // inteiros utilizados para operacoes de shift 178 | i, j, k: Integer; // contadores 179 | fon09, fon11, fon12: Int64; // inteiros utilizados para manipular o codigo 180 | reg09, reg11, reg12: TCharArray; // matrizes de caracteres utilizadas para manipular o codigo 181 | fonrnd, finalRand: TCharArray; // estruturas que armazenam o codigo 182 | work: TCharArray; // variavel de manipulacao 183 | foncmp, fonaux: TCharArray; // matrizes de manipulacao 184 | auxStr: string; // string de manipulacao 185 | component: TArray; // texto eh armazenado no vetor 186 | begin 187 | // gera um codigo identificador de 10 caracteres para um texto qualquer 188 | Result := EmptyStr; 189 | 190 | fon09 := 0; 191 | fon11 := 0; 192 | fon12 := 0; 193 | 194 | SetLength(reg09, 4); 195 | SetLength(reg11, 4); 196 | SetLength(reg12, 4); 197 | 198 | SetLength(fonrnd, 5); 199 | SetLength(finalRand, 10); 200 | 201 | SetLength(work, 2); 202 | 203 | SetLength(foncmp, 256); 204 | SetLength(fonaux, 256); 205 | 206 | component := str.Split([' ']); 207 | 208 | // percorre o texto, palavra a palavra 209 | for i := 0 to Pred(Length(component)) do 210 | begin 211 | auxStr := component[i]; 212 | foncmp := auxStr.ToCharArray; 213 | 214 | // se a palavra nao for vazia 215 | if foncmp[0] <> ' ' then 216 | begin 217 | // branqueia matriz 218 | for j := 0 to 255 do 219 | fonaux[j] := ' '; 220 | 221 | // se a palavra iniciar por vogal, insere um "R" no inicio da palavra 222 | if ((foncmp[0] = 'I') or (foncmp[0] = 'A') or (foncmp[0] = 'U')) then 223 | begin 224 | fonaux[0] := 'R'; 225 | for j := 0 to Pred(auxStr.Length) do 226 | fonaux[j + 1] := foncmp[j]; 227 | end 228 | else 229 | begin 230 | // se a palavra iniciar com "GI", suprime o "G" 231 | if ((foncmp[0] = 'G') and (auxStr.Length > 1)) then 232 | begin 233 | if (foncmp[1] = 'I') then 234 | begin 235 | for j := 0 to auxStr.Length - 2 do 236 | fonaux[j] := foncmp[j + 1]; 237 | end 238 | else 239 | begin 240 | // senao apenas copia a palavra original 241 | for j := 0 to Pred(auxStr.Length) do 242 | fonaux[j] := foncmp[j]; 243 | end; 244 | end 245 | else 246 | begin 247 | // senao apenas copia a palavra original 248 | for j := 0 to Pred(auxStr.Length) do 249 | fonaux[j] := foncmp[j]; 250 | end; 251 | end; 252 | 253 | auxStr := EmptyStr; 254 | for lchar in fonaux do 255 | auxStr := auxStr + lchar; 256 | auxStr := auxStr.Trim; 257 | 258 | foncmp := auxStr.ToCharArray; 259 | 260 | for j := 0 to 255 do 261 | fonaux[j] := ' '; 262 | 263 | j := 0; 264 | k := 0; 265 | 266 | // percorre a palavra, letra a letra 267 | while j < auxStr.Length do 268 | begin 269 | // se a palavra terminar com BI, DI, FI, GI, JI, PI, KI, TI ou VI suprime estas silabas da palavra 270 | if ((j + 2 = auxStr.Length) and (j <> 0) and ((foncmp[j] = 'B') or (foncmp[j] = 'D') or (foncmp[j] = 'F') 271 | or (foncmp[j] = 'G') or (foncmp[j] = 'J') or (foncmp[j] = 'P') or (foncmp[j] = 'K') or (foncmp[j] = 'T') or (foncmp[j] = 'V'))) then 272 | begin 273 | if foncmp[j + 1] = 'I' then 274 | j := j + 2 275 | else 276 | begin 277 | fonaux[k] := foncmp[j]; 278 | Inc(j); 279 | Inc(k); 280 | end; 281 | end 282 | // NI+vogal ou LI+vogal = N+vogal ou L+vogal 283 | else if ((j + 3 <= auxStr.Length) and ((foncmp[j] = 'N') or (foncmp[j] = 'L'))) then 284 | begin 285 | if ((foncmp[j + 1] = 'I') and ((foncmp[j + 2] = 'A') or (foncmp[j + 2] = 'E') or (foncmp[j + 2] = 'O') or (foncmp[j + 2] = 'U'))) then 286 | begin 287 | fonaux[k] := foncmp[j]; 288 | fonaux[k + 1] := foncmp[j + 2]; 289 | j := j + 3; 290 | k := k + 2; 291 | end 292 | else 293 | begin 294 | fonaux[k] := foncmp[j]; 295 | Inc(J); 296 | Inc(K); 297 | end; 298 | end 299 | // vogal+R final = vogal 300 | else if ((foncmp[j] = 'R') and (j > 0)) then 301 | begin 302 | if ((foncmp[j - 1] <> 'A') and (foncmp[j - 1] <> 'E') and (foncmp[j - 1] <> 'I') and (foncmp[j - 1] <> 'O') and (foncmp[j - 1] <> 'U')) then 303 | Inc(J) 304 | else 305 | begin 306 | fonaux[k] := foncmp[j]; 307 | Inc(J); 308 | Inc(K); 309 | end; 310 | end 311 | else 312 | begin 313 | fonaux[k] := foncmp[j]; 314 | Inc(J); 315 | Inc(K); 316 | end; 317 | end; 318 | 319 | auxStr := EmptyStr; // >>>>>>>> ADDED BY VINICIUS 320 | for lchar in fonaux do 321 | auxStr := auxStr + lchar; 322 | auxStr := auxStr.Trim; 323 | 324 | foncmp := auxStr.ToCharArray; 325 | 326 | for j := 0 to 255 do 327 | fonaux[j] := ' '; 328 | 329 | // percorre a palavra, letra a letra 330 | for j := 0 to Pred(auxStr.Length) do 331 | begin 332 | // se a letra for "V", substitui por "F" 333 | if foncmp[j] = 'V' then 334 | fonaux[j] := 'F' 335 | else if ((foncmp[j] = 'X') or (foncmp[j] = 'Z') or (foncmp[j] = 'K')) then // se a letra for "X","Z" ou "K", substitui por "S" 336 | fonaux[j] := 'S' 337 | else if foncmp[j] = 'G' then // G -> D 338 | fonaux[j] := 'D' 339 | else 340 | fonaux[j] := foncmp[j]; 341 | end; 342 | end; 343 | 344 | auxStr := EmptyStr; // >>>>>>>> ADDED BY VINICIUS 345 | for lchar in fonaux do 346 | auxStr := auxStr + lchar; 347 | auxStr := auxStr.Trim; 348 | 349 | // a palavra eh recolocada, modificada, no vetor que contem o texto 350 | component[I] := auxStr; 351 | end; 352 | 353 | // percorre o texto, palavra a palavra 354 | for i := 0 to Pred(Length(component)) do 355 | begin 356 | auxStr := component[i]; 357 | 358 | // considera somente as primeiras 7 letras da palavra 359 | if auxStr.Length > 7 then 360 | begin 361 | foncmp := auxStr.ToCharArray; 362 | for j := 7 to Pred(auxStr.Length) do 363 | foncmp[j] := ' '; 364 | 365 | auxStr := EmptyStr; // >>>>>>>> ADDED BY VINICIUS 366 | for lchar in foncmp do 367 | auxStr := auxStr + lchar; 368 | auxStr := auxStr.Trim; 369 | 370 | component[I] := auxStr; 371 | end; 372 | 373 | // componentes do codigo sao calculados 374 | fon11 := fon11 + randomic(tabEbc(auxStr)); 375 | fon12 := fon12 + randomic(tabNor(tabEbc(auxStr))); 376 | end; 377 | 378 | // percorre o texto, palavra a palavra 379 | for i := 0 to Pred(Length(component)) do 380 | fon09 := fon09 + randomic(component[i]); // componente do codigo eh calculado 381 | 382 | // monta o codigo identificador do texto 383 | reg09 := fonreg(fon09); 384 | reg11 := fonreg(fon11); 385 | reg12 := fonreg(fon12); 386 | 387 | fonrnd[0] := reg12[2]; 388 | fonrnd[1] := reg11[1]; 389 | fonrnd[2] := reg11[2]; 390 | 391 | if ((fonrnd[0] = '0') and (fonrnd[1] = '0') and (fonrnd[2] = '0')) then 392 | begin 393 | fonrnd[0] := reg12[1]; 394 | fonrnd[1] := reg11[0]; 395 | fonrnd[2] := reg11[3]; 396 | end; 397 | 398 | fonrnd[3] := reg09[1]; 399 | fonrnd[4] := reg09[2]; 400 | 401 | if ((fonrnd[3] = '0') and (fonrnd[4] = '0')) then 402 | begin 403 | fonrnd[3] := reg09[0]; 404 | fonrnd[4] := reg09[3]; 405 | 406 | if ((fonrnd[3] = '0') and (fonrnd[4] = '0')) then 407 | begin 408 | fon09 := fon11 + fon12; 409 | reg09 := fonreg(fon09); 410 | 411 | fonrnd[3] := reg09[1]; 412 | fonrnd[4] := reg09[2]; 413 | end; 414 | end; 415 | 416 | j := 0; 417 | for i := 0 to 4 do 418 | begin 419 | auxStr := fonrnd[i]; 420 | 421 | w0 := Ord(fonrnd[i]); 422 | w0 := w0 shr 4; 423 | work[0] := char(w0); 424 | 425 | if Ord(work[0]) <= $0009 then 426 | finalRand[j] := char(Ord(work[0]) + 48) 427 | else 428 | finalRand[j] := char(Ord(work[0]) - 10 + 97); 429 | 430 | w1 := Ord(fonrnd[i]); 431 | w1 := w1 shl 28; 432 | w0 := w1 shr 28; 433 | work[0] := char(w0); 434 | 435 | if Ord(work[0]) <= $0009 then 436 | finalRand[j + 1] := char(Ord(work[0]) + 48) 437 | else 438 | finalRand[j + 1] := char(Ord(work[0]) - 10 + 97); 439 | 440 | j := j + 2; 441 | end; 442 | 443 | for lchar in finalRand do 444 | Result := Result + lchar; 445 | end; 446 | 447 | function TCodigoFoneticoCore.tabEbc(const str: string): string; 448 | var 449 | i: integer; 450 | fonaux: TCharArray; 451 | lchar: char; 452 | begin 453 | Result := EmptyStr; 454 | SetLength(fonaux, 256); 455 | fonaux := str.ToCharArray; 456 | for i := 0 to Pred(str.Length) do 457 | begin 458 | case fonaux[i] of 459 | 'A': 460 | fonaux[i] := Char($00c1); 461 | 'B': 462 | fonaux[i] := Char($00c2); 463 | 'C': 464 | fonaux[i] := Char($00c3); 465 | 'D': 466 | fonaux[i] := Char($00c4); 467 | 'E': 468 | fonaux[i] := Char($00c5); 469 | 'F': 470 | fonaux[i] := Char($00c6); 471 | 'G': 472 | fonaux[i] := Char($00c7); 473 | 'H': 474 | fonaux[i] := Char($00c8); 475 | 'I': 476 | fonaux[i] := Char($00c9); 477 | 'J': 478 | fonaux[i] := Char($00d1); 479 | 'K': 480 | fonaux[i] := Char($00d2); 481 | 'L': 482 | fonaux[i] := Char($00d3); 483 | 'M': 484 | fonaux[i] := Char($00d4); 485 | 'N': 486 | fonaux[i] := Char($00d5); 487 | 'O': 488 | fonaux[i] := Char($00d6); 489 | 'P': 490 | fonaux[i] := Char($00d7); 491 | 'Q': 492 | fonaux[i] := Char($00d8); 493 | 'R': 494 | fonaux[i] := Char($00d9); 495 | 'S': 496 | fonaux[i] := Char($00e2); 497 | 'T': 498 | fonaux[i] := Char($00e3); 499 | 'U': 500 | fonaux[i] := Char($00e4); 501 | 'V': 502 | fonaux[i] := Char($00e5); 503 | 'W': 504 | fonaux[i] := Char($00e6); 505 | 'X': 506 | fonaux[i] := Char($00e7); 507 | 'Y': 508 | fonaux[i] := Char($00e8); 509 | 'Z': 510 | fonaux[i] := Char($00e9); 511 | '0': 512 | fonaux[i] := Char($00f0); 513 | '1': 514 | fonaux[i] := Char($00f1); 515 | '2': 516 | fonaux[i] := Char($00f2); 517 | '3': 518 | fonaux[i] := Char($00f3); 519 | '4': 520 | fonaux[i] := Char($00f4); 521 | '5': 522 | fonaux[i] := Char($00f5); 523 | '6': 524 | fonaux[i] := Char($00f6); 525 | '7': 526 | fonaux[i] := Char($00f7); 527 | '8': 528 | fonaux[i] := Char($00f8); 529 | '9': 530 | fonaux[i] := Char($00f9); 531 | else 532 | fonaux[i] := Char($0040); 533 | end; 534 | end; 535 | for lchar in fonaux do 536 | Result := Result + lchar; 537 | end; 538 | 539 | function TCodigoFoneticoCore.tabNor(const str: string): string; 540 | var 541 | i: integer; 542 | fonaux: TCharArray; 543 | lchar: Char; 544 | begin 545 | Result := EmptyStr; 546 | SetLength(fonaux, 256); 547 | fonaux := str.ToCharArray; 548 | for i := 0 to Pred(str.Length) do 549 | begin 550 | case fonaux[i] of 551 | Char($00c1): 552 | fonaux[i] := Char($0013); 553 | Char($00c2): 554 | fonaux[i] := Char($0016); 555 | Char($00c3): 556 | fonaux[i] := Char($0019); 557 | Char($00c4): 558 | fonaux[i] := Char($001c); 559 | Char($00c5): 560 | fonaux[i] := Char($0011); 561 | Char($00c6): 562 | fonaux[i] := Char($0014); 563 | Char($00c7): 564 | fonaux[i] := Char($0017); 565 | Char($00c8): 566 | fonaux[i] := Char($001a); 567 | Char($00c9): 568 | fonaux[i] := Char($001d); 569 | Char($00d1): 570 | fonaux[i] := Char($0033); 571 | Char($00d2): 572 | fonaux[i] := Char($0036); 573 | Char($00d3): 574 | fonaux[i] := Char($0039); 575 | Char($00d4): 576 | fonaux[i] := Char($003c); 577 | Char($00d5): 578 | fonaux[i] := Char($0031); 579 | Char($00d6): 580 | fonaux[i] := Char($0034); 581 | Char($00d7): 582 | fonaux[i] := Char($0037); 583 | Char($00d8): 584 | fonaux[i] := Char($003a); 585 | Char($00d9): 586 | fonaux[i] := Char($003d); 587 | Char($00e2): 588 | fonaux[i] := Char($0053); 589 | Char($00e3): 590 | fonaux[i] := Char($0056); 591 | Char($00e4): 592 | fonaux[i] := Char($0059); 593 | Char($00e5): 594 | fonaux[i] := Char($005c); 595 | Char($00e6): 596 | fonaux[i] := Char($0054); 597 | Char($00e7): 598 | fonaux[i] := Char($0057); 599 | Char($00e8): 600 | fonaux[i] := Char($005a); 601 | Char($00e9): 602 | fonaux[i] := Char($005d); 603 | Char($00f0): 604 | fonaux[i] := Char($0070); 605 | Char($00f1): 606 | fonaux[i] := Char($0071); 607 | Char($00f2): 608 | fonaux[i] := Char($0072); 609 | Char($00f3): 610 | fonaux[i] := Char($0073); 611 | Char($00f4): 612 | fonaux[i] := Char($0074); 613 | Char($00f5): 614 | fonaux[i] := Char($0075); 615 | Char($00f6): 616 | fonaux[i] := Char($0076); 617 | Char($00f7): 618 | fonaux[i] := Char($0077); 619 | Char($00f8): 620 | fonaux[i] := Char($0078); 621 | Char($00f9): 622 | fonaux[i] := Char($0079); 623 | else 624 | fonaux[i] := Char($0040); 625 | end; 626 | end; 627 | for lchar in fonaux do 628 | Result := Result + lchar; 629 | end; 630 | 631 | end. 632 | -------------------------------------------------------------------------------- /samples/Samples.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {535F6417-FF3B-460C-B367-AC441CA69599} 4 | 18.7 5 | VCL 6 | Samples.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Application 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Cfg_1 34 | true 35 | true 36 | 37 | 38 | true 39 | Base 40 | true 41 | 42 | 43 | true 44 | Cfg_2 45 | true 46 | true 47 | 48 | 49 | .\$(Platform)\$(Config) 50 | .\$(Platform)\$(Config) 51 | false 52 | false 53 | false 54 | false 55 | false 56 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 57 | $(BDS)\bin\delphi_PROJECTICON.ico 58 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 59 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 60 | Samples 61 | 62 | 63 | DBXSqliteDriver;dxFlowChartRS26;dxPSdxMapControlLnkRS26;DBXDb2Driver;vclactnband;dxBarRS26;vclFireDAC;dxFireDACEMFRS26;tethering;dxSpreadSheetInplaceRichEditRS26;FireDACADSDriver;dxSkinVisualStudio2013BlueRS26;dxRichEditCoreRS26;dxPSdxSpreadSheetLnkRS26;dxSkinSharpPlusRS26;FireDACMSSQLDriver;vcltouch;vcldb;svn;dxPSTeeChartRS26;dxSkinFoggyRS26;dxSkinVisualStudio2013DarkRS26;dxSkinOffice2013DarkGrayRS26;dxGDIPlusRS26;dxAuthorizationAgentsRS26;dxPSdxFCLnkRS26;vclib;frxTee26;dxPSLnksRS26;dxSkinSpringTimeRS26;FireDACDBXDriver;cxGridRS26;dxPsPrVwAdvRS26;dxPDFViewerRS26;boss_ide;vclx;dxPScxTLLnkRS26;dxSkinOffice2010BlueRS26;RESTBackendComponents;dxSkinOffice2016DarkRS26;dxSkinOffice2016ColorfulRS26;dxSkinMoneyTwinsRS26;VCLRESTComponents;fsTee26;dxSkinValentineRS26;dxSkinHighContrastRS26;vclie;bindengine;CloudService;dxmdsRS26;FireDACMySQLDriver;fsIBX26;dxdborRS26;frx26;DataSnapClient;dxSkinOffice2013WhiteRS26;dxFireDACServerModeRS26;bindcompdbx;fsFD26;DBXSybaseASEDriver;IndyIPServer;cxPivotGridRS26;IndySystem;fsADO26;dxSkinDarkRoomRS26;frxDBX26;cxTreeListdxBarPopupMenuRS26;dsnapcon;cxTreeListRS26;dxPScxPivotGridLnkRS26;cxSchedulerRibbonStyleEventEditorRS26;dxPSCoreRS26;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSpreadSheetRS26;dxBarExtItemsRS26;dxPSdxGaugeControlLnkRS26;emshosting;dxSkinLondonLiquidSkyRS26;dxSkinSevenRS26;DBXOdbcDriver;FireDACTDataDriver;FMXTee;dxSkinLiquidSkyRS26;soaprtl;DbxCommonDriver;dxRichEditControlCoreRS26;dxdbtrRS26;dxFlowChartAdvancedCustomizeFormRS26;dxDockingRS26;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;cxLibraryRS26;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;cxDataRS26;dxPScxSchedulerLnkRS26;dxSpreadSheetConditionalFormattingDialogsRS26;appanalytics;dxRibbonCustomizationFormRS26;cxSchedulerGridRS26;IndyIPClient;bindcompvcl;dxSkinVisualStudio2013LightRS26;TeeUI;dxADOEMFRS26;VclSmp;FireDACODBCDriver;dxRibbonRS26;DataSnapIndy10ServerTransport;dxPScxCommonRS26;dxRichEditDocumentModelRS26;DataSnapProviderClient;FireDACMongoDBDriver;dxPScxGridLnkRS26;dxSkinDevExpressDarkStyleRS26;dxSpreadSheetCoreRS26;RESTComponents;dxSkinGlassOceansRS26;DBXInterBaseDriver;dxSkinPumpkinRS26;dxPScxExtCommonRS26;emsclientfiredac;dxSkinXmas2008BlueRS26;DataSnapFireDAC;svnui;frxFD26;dxSkinOffice2007SilverRS26;cxPageControlRS26;dxSkinTheBezierRS26;dxSkinDevExpressStyleRS26;DBXMSSQLDriver;dxRichEditControlRS26;DatasnapConnectorsFreePascal;dxGaugeControlRS26;dxorgcRS26;dxPScxVGridLnkRS26;bindcompfmx;dxSkinOffice2007PinkRS26;DBXOracleDriver;dxSkinOffice2007BlueRS26;dxSkinStardustRS26;inetdb;CEF4Delphi;dxBarDBNavRS26;dxDBXServerModeRS26;dxSkinTheAsphaltWorldRS26;dxSkinSilverRS26;FmxTeeUI;dxSkinBlueprintRS26;emsedge;FireDACIBDriver;fmx;fmxdae;dxServerModeRS26;dxLayoutControlRS26;dxWizardControlRS26;dxSkiniMaginaryRS26;dxTabbedMDIRS26;fs26;dxEMFRS26;dbexpress;IndyCore;dxComnRS26;frxIntIO26;dsnap;dxSkinSharpRS26;DataSnapCommon;emsclient;FireDACCommon;SIAControls;DataSnapConnectors;cxSchedulerTreeBrowserRS26;dxADOServerModeRS26;adobe_acrobat;soapserver;dxSkinOffice2007BlackRS26;cxVerticalGridRS26;dxtrmdRS26;FireDACOracleDriver;DBXMySQLDriver;dxSkinOffice2010BlackRS26;dxSkinMetropolisDarkRS26;cxEditorsRS26;DBXFirebirdDriver;cxSchedulerRS26;cxSchedulerWebServiceStorageRS26;dxPSdxLCLnkRS26;dxSkinBlackRS26;FireDACCommonDriver;FireDACCommonODBC;dxSkinOffice2013LightGrayRS26;dxMapControlRS26;frxIntIOIndy26;inet;dxSpellCheckerRS26;dxSkinCoffeeRS26;IndyIPCommon;dxSpreadSheetCoreConditionalFormattingDialogsRS26;vcl;dxPSdxDBOCLnkRS26;dxSkinMetropolisRS26;frxDB26;FireDACDb2Driver;dxSpreadSheetReportDesignerRS26;dxPScxPCProdRS26;dxNavBarRS26;dxCoreRS26;fsDB26;cxExportRS26;TeeDB;FireDAC;dxThemeRS26;dxHttpIndyRequestRS26;dxPSPrVwRibbonRS26;dxSkinOffice2010SilverRS26;frxe26;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;dxSkinSevenClassicRS26;cxPivotGridChartRS26;dxPSRichEditControlLnkRS26;frxIBX26;dxPSDBTeeChartRS26;ibxpress;Tee;AdvancedFilter;DataSnapServer;ibxbindings;dxPSdxDBTVLnkRS26;vclwinx;FireDACDSDriver;frxADO26;dxOfficeCoreRS26;dxTileControlRS26;dxSkinsCoreRS26;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;dxSkinLilianRS26;dxSkinSummer2008RS26;DBXInformixDriver;dxPSdxOCLnkRS26;dxSkinVS2010RS26;dxSkinBlueRS26;dmvcframeworkRT;dbxcds;adortl;dxSkinMcSkinRS26;dxSkinDarkSideRS26;dmvcframeworkDT;dxSpreadSheetCoreDialogsRS26;dxBarExtDBItemsRS26;dsnapxml;dbrtl;inetdbxpress;dxSkinOffice2007GreenRS26;IndyProtocols;dxSkinWhiteprintRS26;dxRichEditInplaceRS26;dxPSdxPDFViewerLnkRS26;dxSkinCaramelRS26;fmxase;$(DCC_UsePackage) 64 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 65 | Debug 66 | true 67 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 68 | 1033 69 | $(BDS)\bin\default_app.manifest 70 | 71 | 72 | DBXSqliteDriver;dxFlowChartRS26;dxPSdxMapControlLnkRS26;DBXDb2Driver;vclactnband;dxBarRS26;vclFireDAC;dxFireDACEMFRS26;tethering;dxSpreadSheetInplaceRichEditRS26;FireDACADSDriver;dxSkinVisualStudio2013BlueRS26;dxRichEditCoreRS26;dxPSdxSpreadSheetLnkRS26;dxSkinSharpPlusRS26;FireDACMSSQLDriver;vcltouch;vcldb;dxPSTeeChartRS26;dxSkinFoggyRS26;dxSkinVisualStudio2013DarkRS26;dxSkinOffice2013DarkGrayRS26;dxGDIPlusRS26;dxAuthorizationAgentsRS26;dxPSdxFCLnkRS26;vclib;dxPSLnksRS26;dxSkinSpringTimeRS26;FireDACDBXDriver;cxGridRS26;dxPsPrVwAdvRS26;dxPDFViewerRS26;vclx;dxPScxTLLnkRS26;dxSkinOffice2010BlueRS26;RESTBackendComponents;dxSkinOffice2016DarkRS26;dxSkinOffice2016ColorfulRS26;dxSkinMoneyTwinsRS26;VCLRESTComponents;dxSkinValentineRS26;dxSkinHighContrastRS26;vclie;bindengine;CloudService;dxmdsRS26;FireDACMySQLDriver;dxdborRS26;DataSnapClient;dxSkinOffice2013WhiteRS26;dxFireDACServerModeRS26;bindcompdbx;DBXSybaseASEDriver;IndyIPServer;cxPivotGridRS26;IndySystem;dxSkinDarkRoomRS26;cxTreeListdxBarPopupMenuRS26;dsnapcon;cxTreeListRS26;dxPScxPivotGridLnkRS26;cxSchedulerRibbonStyleEventEditorRS26;dxPSCoreRS26;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSpreadSheetRS26;dxBarExtItemsRS26;dxPSdxGaugeControlLnkRS26;emshosting;dxSkinLondonLiquidSkyRS26;dxSkinSevenRS26;DBXOdbcDriver;FireDACTDataDriver;FMXTee;dxSkinLiquidSkyRS26;soaprtl;DbxCommonDriver;dxRichEditControlCoreRS26;dxdbtrRS26;dxFlowChartAdvancedCustomizeFormRS26;dxDockingRS26;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;cxLibraryRS26;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;cxDataRS26;dxPScxSchedulerLnkRS26;dxSpreadSheetConditionalFormattingDialogsRS26;appanalytics;dxRibbonCustomizationFormRS26;cxSchedulerGridRS26;IndyIPClient;bindcompvcl;dxSkinVisualStudio2013LightRS26;TeeUI;dxADOEMFRS26;VclSmp;FireDACODBCDriver;dxRibbonRS26;DataSnapIndy10ServerTransport;dxPScxCommonRS26;dxRichEditDocumentModelRS26;DataSnapProviderClient;FireDACMongoDBDriver;dxPScxGridLnkRS26;dxSkinDevExpressDarkStyleRS26;dxSpreadSheetCoreRS26;RESTComponents;dxSkinGlassOceansRS26;DBXInterBaseDriver;dxSkinPumpkinRS26;dxPScxExtCommonRS26;emsclientfiredac;dxSkinXmas2008BlueRS26;DataSnapFireDAC;dxSkinOffice2007SilverRS26;cxPageControlRS26;dxSkinTheBezierRS26;dxSkinDevExpressStyleRS26;DBXMSSQLDriver;dxRichEditControlRS26;DatasnapConnectorsFreePascal;dxGaugeControlRS26;dxorgcRS26;dxPScxVGridLnkRS26;bindcompfmx;dxSkinOffice2007PinkRS26;DBXOracleDriver;dxSkinOffice2007BlueRS26;dxSkinStardustRS26;inetdb;CEF4Delphi;dxBarDBNavRS26;dxDBXServerModeRS26;dxSkinTheAsphaltWorldRS26;dxSkinSilverRS26;FmxTeeUI;dxSkinBlueprintRS26;emsedge;FireDACIBDriver;fmx;fmxdae;dxServerModeRS26;dxLayoutControlRS26;dxWizardControlRS26;dxSkiniMaginaryRS26;dxTabbedMDIRS26;dxEMFRS26;dbexpress;IndyCore;dxComnRS26;dsnap;dxSkinSharpRS26;DataSnapCommon;emsclient;FireDACCommon;DataSnapConnectors;cxSchedulerTreeBrowserRS26;dxADOServerModeRS26;soapserver;dxSkinOffice2007BlackRS26;cxVerticalGridRS26;dxtrmdRS26;FireDACOracleDriver;DBXMySQLDriver;dxSkinOffice2010BlackRS26;dxSkinMetropolisDarkRS26;cxEditorsRS26;DBXFirebirdDriver;cxSchedulerRS26;cxSchedulerWebServiceStorageRS26;dxPSdxLCLnkRS26;dxSkinBlackRS26;FireDACCommonDriver;FireDACCommonODBC;dxSkinOffice2013LightGrayRS26;dxMapControlRS26;inet;dxSpellCheckerRS26;dxSkinCoffeeRS26;IndyIPCommon;dxSpreadSheetCoreConditionalFormattingDialogsRS26;vcl;dxPSdxDBOCLnkRS26;dxSkinMetropolisRS26;FireDACDb2Driver;dxSpreadSheetReportDesignerRS26;dxPScxPCProdRS26;dxNavBarRS26;dxCoreRS26;cxExportRS26;TeeDB;FireDAC;dxThemeRS26;dxHttpIndyRequestRS26;dxPSPrVwRibbonRS26;dxSkinOffice2010SilverRS26;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;dxSkinSevenClassicRS26;cxPivotGridChartRS26;dxPSRichEditControlLnkRS26;dxPSDBTeeChartRS26;ibxpress;Tee;DataSnapServer;ibxbindings;dxPSdxDBTVLnkRS26;vclwinx;FireDACDSDriver;dxOfficeCoreRS26;dxTileControlRS26;dxSkinsCoreRS26;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;dxSkinLilianRS26;dxSkinSummer2008RS26;DBXInformixDriver;dxPSdxOCLnkRS26;dxSkinVS2010RS26;dxSkinBlueRS26;dbxcds;adortl;dxSkinMcSkinRS26;dxSkinDarkSideRS26;dxSpreadSheetCoreDialogsRS26;dxBarExtDBItemsRS26;dsnapxml;dbrtl;inetdbxpress;dxSkinOffice2007GreenRS26;IndyProtocols;dxSkinWhiteprintRS26;dxRichEditInplaceRS26;dxPSdxPDFViewerLnkRS26;dxSkinCaramelRS26;fmxase;$(DCC_UsePackage) 73 | 74 | 75 | DEBUG;$(DCC_Define) 76 | true 77 | false 78 | true 79 | true 80 | true 81 | 82 | 83 | false 84 | true 85 | PerMonitorV2 86 | 87 | 88 | false 89 | RELEASE;$(DCC_Define) 90 | 0 91 | 0 92 | 93 | 94 | true 95 | PerMonitorV2 96 | 97 | 98 | 99 | MainSource 100 | 101 | 102 | 103 | 104 | 105 |
FrmMain
106 | dfm 107 |
108 | 109 | 110 | 111 | 112 | Cfg_2 113 | Base 114 | 115 | 116 | Base 117 | 118 | 119 | Cfg_1 120 | Base 121 | 122 |
123 | 124 | Delphi.Personality.12 125 | Application 126 | 127 | 128 | 129 | Samples.dpr 130 | 131 | 132 | 133 | 134 | 135 | Samples.exe 136 | true 137 | 138 | 139 | 140 | 141 | 1 142 | 143 | 144 | Contents\MacOS 145 | 1 146 | 147 | 148 | 0 149 | 150 | 151 | 152 | 153 | classes 154 | 1 155 | 156 | 157 | 158 | 159 | res\xml 160 | 1 161 | 162 | 163 | 164 | 165 | library\lib\armeabi-v7a 166 | 1 167 | 168 | 169 | 170 | 171 | library\lib\armeabi 172 | 1 173 | 174 | 175 | 176 | 177 | library\lib\mips 178 | 1 179 | 180 | 181 | 182 | 183 | library\lib\armeabi-v7a 184 | 1 185 | 186 | 187 | 188 | 189 | res\drawable 190 | 1 191 | 192 | 193 | 194 | 195 | res\values 196 | 1 197 | 198 | 199 | 200 | 201 | res\values-v21 202 | 1 203 | 204 | 205 | 206 | 207 | res\values 208 | 1 209 | 210 | 211 | 212 | 213 | res\drawable 214 | 1 215 | 216 | 217 | 218 | 219 | res\drawable-xxhdpi 220 | 1 221 | 222 | 223 | 224 | 225 | res\drawable-ldpi 226 | 1 227 | 228 | 229 | 230 | 231 | res\drawable-mdpi 232 | 1 233 | 234 | 235 | 236 | 237 | res\drawable-hdpi 238 | 1 239 | 240 | 241 | 242 | 243 | res\drawable-xhdpi 244 | 1 245 | 246 | 247 | 248 | 249 | res\drawable-mdpi 250 | 1 251 | 252 | 253 | 254 | 255 | res\drawable-hdpi 256 | 1 257 | 258 | 259 | 260 | 261 | res\drawable-xhdpi 262 | 1 263 | 264 | 265 | 266 | 267 | res\drawable-xxhdpi 268 | 1 269 | 270 | 271 | 272 | 273 | res\drawable-xxxhdpi 274 | 1 275 | 276 | 277 | 278 | 279 | res\drawable-small 280 | 1 281 | 282 | 283 | 284 | 285 | res\drawable-normal 286 | 1 287 | 288 | 289 | 290 | 291 | res\drawable-large 292 | 1 293 | 294 | 295 | 296 | 297 | res\drawable-xlarge 298 | 1 299 | 300 | 301 | 302 | 303 | res\values 304 | 1 305 | 306 | 307 | 308 | 309 | 1 310 | 311 | 312 | Contents\MacOS 313 | 1 314 | 315 | 316 | 0 317 | 318 | 319 | 320 | 321 | Contents\MacOS 322 | 1 323 | .framework 324 | 325 | 326 | Contents\MacOS 327 | 1 328 | .framework 329 | 330 | 331 | 0 332 | 333 | 334 | 335 | 336 | 1 337 | .dylib 338 | 339 | 340 | 1 341 | .dylib 342 | 343 | 344 | 1 345 | .dylib 346 | 347 | 348 | Contents\MacOS 349 | 1 350 | .dylib 351 | 352 | 353 | Contents\MacOS 354 | 1 355 | .dylib 356 | 357 | 358 | 0 359 | .dll;.bpl 360 | 361 | 362 | 363 | 364 | 1 365 | .dylib 366 | 367 | 368 | 1 369 | .dylib 370 | 371 | 372 | 1 373 | .dylib 374 | 375 | 376 | Contents\MacOS 377 | 1 378 | .dylib 379 | 380 | 381 | Contents\MacOS 382 | 1 383 | .dylib 384 | 385 | 386 | 0 387 | .bpl 388 | 389 | 390 | 391 | 392 | 0 393 | 394 | 395 | 0 396 | 397 | 398 | 0 399 | 400 | 401 | 0 402 | 403 | 404 | Contents\Resources\StartUp\ 405 | 0 406 | 407 | 408 | Contents\Resources\StartUp\ 409 | 0 410 | 411 | 412 | 0 413 | 414 | 415 | 416 | 417 | 1 418 | 419 | 420 | 1 421 | 422 | 423 | 1 424 | 425 | 426 | 427 | 428 | 1 429 | 430 | 431 | 1 432 | 433 | 434 | 1 435 | 436 | 437 | 438 | 439 | 1 440 | 441 | 442 | 1 443 | 444 | 445 | 1 446 | 447 | 448 | 449 | 450 | 1 451 | 452 | 453 | 1 454 | 455 | 456 | 1 457 | 458 | 459 | 460 | 461 | 1 462 | 463 | 464 | 1 465 | 466 | 467 | 1 468 | 469 | 470 | 471 | 472 | 1 473 | 474 | 475 | 1 476 | 477 | 478 | 1 479 | 480 | 481 | 482 | 483 | 1 484 | 485 | 486 | 1 487 | 488 | 489 | 1 490 | 491 | 492 | 493 | 494 | 1 495 | 496 | 497 | 1 498 | 499 | 500 | 1 501 | 502 | 503 | 504 | 505 | 1 506 | 507 | 508 | 1 509 | 510 | 511 | 1 512 | 513 | 514 | 515 | 516 | 1 517 | 518 | 519 | 1 520 | 521 | 522 | 1 523 | 524 | 525 | 526 | 527 | 1 528 | 529 | 530 | 1 531 | 532 | 533 | 1 534 | 535 | 536 | 537 | 538 | 1 539 | 540 | 541 | 1 542 | 543 | 544 | 1 545 | 546 | 547 | 548 | 549 | 1 550 | 551 | 552 | 1 553 | 554 | 555 | 1 556 | 557 | 558 | 559 | 560 | 1 561 | 562 | 563 | 1 564 | 565 | 566 | 1 567 | 568 | 569 | 570 | 571 | 1 572 | 573 | 574 | 1 575 | 576 | 577 | 1 578 | 579 | 580 | 581 | 582 | 1 583 | 584 | 585 | 1 586 | 587 | 588 | 1 589 | 590 | 591 | 592 | 593 | 1 594 | 595 | 596 | 1 597 | 598 | 599 | 1 600 | 601 | 602 | 603 | 604 | 1 605 | 606 | 607 | 1 608 | 609 | 610 | 1 611 | 612 | 613 | 614 | 615 | 1 616 | 617 | 618 | 1 619 | 620 | 621 | 1 622 | 623 | 624 | 625 | 626 | 1 627 | 628 | 629 | 1 630 | 631 | 632 | 1 633 | 634 | 635 | 636 | 637 | 1 638 | 639 | 640 | 1 641 | 642 | 643 | 1 644 | 645 | 646 | 647 | 648 | 1 649 | 650 | 651 | 1 652 | 653 | 654 | 1 655 | 656 | 657 | 658 | 659 | 1 660 | 661 | 662 | 1 663 | 664 | 665 | 1 666 | 667 | 668 | 669 | 670 | 1 671 | 672 | 673 | 1 674 | 675 | 676 | 1 677 | 678 | 679 | 680 | 681 | 1 682 | 683 | 684 | 685 | 686 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 687 | 1 688 | 689 | 690 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 691 | 1 692 | 693 | 694 | 695 | 696 | 1 697 | 698 | 699 | 1 700 | 701 | 702 | 703 | 704 | ..\ 705 | 1 706 | 707 | 708 | ..\ 709 | 1 710 | 711 | 712 | 713 | 714 | 1 715 | 716 | 717 | 1 718 | 719 | 720 | 1 721 | 722 | 723 | 724 | 725 | 1 726 | 727 | 728 | 1 729 | 730 | 731 | 1 732 | 733 | 734 | 735 | 736 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 737 | 1 738 | 739 | 740 | 741 | 742 | ..\ 743 | 1 744 | 745 | 746 | ..\ 747 | 1 748 | 749 | 750 | 751 | 752 | Contents 753 | 1 754 | 755 | 756 | Contents 757 | 1 758 | 759 | 760 | 761 | 762 | Contents\Resources 763 | 1 764 | 765 | 766 | Contents\Resources 767 | 1 768 | 769 | 770 | 771 | 772 | library\lib\armeabi-v7a 773 | 1 774 | 775 | 776 | 1 777 | 778 | 779 | 1 780 | 781 | 782 | 1 783 | 784 | 785 | 1 786 | 787 | 788 | Contents\MacOS 789 | 1 790 | 791 | 792 | Contents\MacOS 793 | 1 794 | 795 | 796 | 0 797 | 798 | 799 | 800 | 801 | 1 802 | 803 | 804 | 1 805 | 806 | 807 | 808 | 809 | Assets 810 | 1 811 | 812 | 813 | Assets 814 | 1 815 | 816 | 817 | 818 | 819 | Assets 820 | 1 821 | 822 | 823 | Assets 824 | 1 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | True 839 | False 840 | 841 | 842 | D:\Projetos\delphi\fonetiza\samples\test\fonetizaTests.dproj 843 | 844 | 845 | 12 846 | 847 | 848 | 849 | 850 |
851 | -------------------------------------------------------------------------------- /test/fonetizaTests.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {49D2E96A-27D2-4A70-88DA-115B7EC62E86} 4 | 18.7 5 | None 6 | True 7 | Debug 8 | Win32 9 | 1 10 | Console 11 | fonetizaTests.dpr 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Cfg_1 39 | true 40 | true 41 | 42 | 43 | true 44 | Base 45 | true 46 | 47 | 48 | . 49 | .\$(Platform)\$(Config) 50 | false 51 | false 52 | false 53 | false 54 | false 55 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 56 | $(BDS)\Source\DUnit\src;$(DCC_UnitSearchPath) 57 | _CONSOLE_TESTRUNNER;$(DCC_Define) 58 | fonetizaTests 59 | 60 | 61 | DBXSqliteDriver;tethering;FireDACMSSQLDriver;FireDACDBXDriver;RESTBackendComponents;bindengine;CloudService;FireDACMySQLDriver;DataSnapClient;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;rtl;DbxClientDriver;DBXSybaseASADriver;IndyIPClient;FireDACODBCDriver;DataSnapIndy10ServerTransport;DataSnapProviderClient;FireDACMongoDBDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;FireDACIBDriver;fmx;fmxdae;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;soapserver;FireDACOracleDriver;DBXMySQLDriver;DBXFirebirdDriver;FireDACCommonDriver;FireDACCommonODBC;inet;IndyIPCommon;FireDAC;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;ibxpress;DataSnapServer;ibxbindings;FireDACDSDriver;CustomIPTransport;bindcomp;DBXInformixDriver;dbxcds;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;fmxase;$(DCC_UsePackage) 62 | 63 | 64 | DBXSqliteDriver;dxFlowChartRS26;dxPSdxMapControlLnkRS26;DBXDb2Driver;vclactnband;dxBarRS26;vclFireDAC;dxFireDACEMFRS26;tethering;dxSpreadSheetInplaceRichEditRS26;FireDACADSDriver;dxSkinVisualStudio2013BlueRS26;dxRichEditCoreRS26;dxPSdxSpreadSheetLnkRS26;dxSkinSharpPlusRS26;FireDACMSSQLDriver;vcltouch;vcldb;svn;dxPSTeeChartRS26;dxSkinFoggyRS26;dxSkinVisualStudio2013DarkRS26;dxSkinOffice2013DarkGrayRS26;dxGDIPlusRS26;dxAuthorizationAgentsRS26;dxPSdxFCLnkRS26;vclib;frxTee26;dxPSLnksRS26;dxSkinSpringTimeRS26;FireDACDBXDriver;cxGridRS26;dxPsPrVwAdvRS26;dxPDFViewerRS26;boss_ide;vclx;dxPScxTLLnkRS26;dxSkinOffice2010BlueRS26;RESTBackendComponents;dxSkinOffice2016DarkRS26;dxSkinOffice2016ColorfulRS26;dxSkinMoneyTwinsRS26;VCLRESTComponents;fsTee26;dxSkinValentineRS26;dxSkinHighContrastRS26;vclie;bindengine;CloudService;dxmdsRS26;FireDACMySQLDriver;fsIBX26;dxdborRS26;frx26;DataSnapClient;dxSkinOffice2013WhiteRS26;dxFireDACServerModeRS26;bindcompdbx;fsFD26;DBXSybaseASEDriver;IndyIPServer;cxPivotGridRS26;IndySystem;fsADO26;dxSkinDarkRoomRS26;frxDBX26;cxTreeListdxBarPopupMenuRS26;dsnapcon;cxTreeListRS26;dxPScxPivotGridLnkRS26;cxSchedulerRibbonStyleEventEditorRS26;dxPSCoreRS26;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSpreadSheetRS26;dxBarExtItemsRS26;dxPSdxGaugeControlLnkRS26;emshosting;dxSkinLondonLiquidSkyRS26;dxSkinSevenRS26;DBXOdbcDriver;FireDACTDataDriver;FMXTee;dxSkinLiquidSkyRS26;soaprtl;DbxCommonDriver;dxRichEditControlCoreRS26;dxdbtrRS26;dxFlowChartAdvancedCustomizeFormRS26;dxDockingRS26;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;cxLibraryRS26;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;cxDataRS26;dxPScxSchedulerLnkRS26;dxSpreadSheetConditionalFormattingDialogsRS26;appanalytics;dxRibbonCustomizationFormRS26;cxSchedulerGridRS26;IndyIPClient;bindcompvcl;dxSkinVisualStudio2013LightRS26;TeeUI;dxADOEMFRS26;VclSmp;FireDACODBCDriver;dxRibbonRS26;DataSnapIndy10ServerTransport;dxPScxCommonRS26;dxRichEditDocumentModelRS26;DataSnapProviderClient;FireDACMongoDBDriver;dxPScxGridLnkRS26;dxSkinDevExpressDarkStyleRS26;dxSpreadSheetCoreRS26;RESTComponents;dxSkinGlassOceansRS26;DBXInterBaseDriver;dxSkinPumpkinRS26;dxPScxExtCommonRS26;emsclientfiredac;dxSkinXmas2008BlueRS26;DataSnapFireDAC;svnui;frxFD26;dxSkinOffice2007SilverRS26;cxPageControlRS26;dxSkinTheBezierRS26;dxSkinDevExpressStyleRS26;DBXMSSQLDriver;dxRichEditControlRS26;DatasnapConnectorsFreePascal;dxGaugeControlRS26;dxorgcRS26;dxPScxVGridLnkRS26;bindcompfmx;dxSkinOffice2007PinkRS26;DBXOracleDriver;dxSkinOffice2007BlueRS26;dxSkinStardustRS26;inetdb;CEF4Delphi;dxBarDBNavRS26;dxDBXServerModeRS26;dxSkinTheAsphaltWorldRS26;dxSkinSilverRS26;FmxTeeUI;dxSkinBlueprintRS26;emsedge;FireDACIBDriver;fmx;fmxdae;dxServerModeRS26;dxLayoutControlRS26;dxWizardControlRS26;dxSkiniMaginaryRS26;dxTabbedMDIRS26;fs26;dxEMFRS26;dbexpress;IndyCore;dxComnRS26;frxIntIO26;dsnap;dxSkinSharpRS26;DataSnapCommon;emsclient;FireDACCommon;SIAControls;DataSnapConnectors;cxSchedulerTreeBrowserRS26;dxADOServerModeRS26;adobe_acrobat;soapserver;dxSkinOffice2007BlackRS26;cxVerticalGridRS26;dxtrmdRS26;FireDACOracleDriver;DBXMySQLDriver;dxSkinOffice2010BlackRS26;dxSkinMetropolisDarkRS26;cxEditorsRS26;DBXFirebirdDriver;cxSchedulerRS26;cxSchedulerWebServiceStorageRS26;dxPSdxLCLnkRS26;dxSkinBlackRS26;FireDACCommonDriver;FireDACCommonODBC;dxSkinOffice2013LightGrayRS26;dxMapControlRS26;frxIntIOIndy26;inet;dxSpellCheckerRS26;dxSkinCoffeeRS26;IndyIPCommon;dxSpreadSheetCoreConditionalFormattingDialogsRS26;vcl;dxPSdxDBOCLnkRS26;dxSkinMetropolisRS26;frxDB26;FireDACDb2Driver;dxSpreadSheetReportDesignerRS26;dxPScxPCProdRS26;dxNavBarRS26;dxCoreRS26;fsDB26;cxExportRS26;TeeDB;FireDAC;dxThemeRS26;dxHttpIndyRequestRS26;dxPSPrVwRibbonRS26;dxSkinOffice2010SilverRS26;frxe26;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;dxSkinSevenClassicRS26;cxPivotGridChartRS26;dxPSRichEditControlLnkRS26;frxIBX26;dxPSDBTeeChartRS26;ibxpress;Tee;DataSnapServer;ibxbindings;dxPSdxDBTVLnkRS26;vclwinx;FireDACDSDriver;frxADO26;dxOfficeCoreRS26;dxTileControlRS26;dxSkinsCoreRS26;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;dxSkinLilianRS26;dxSkinSummer2008RS26;DBXInformixDriver;dxPSdxOCLnkRS26;dxSkinVS2010RS26;dxSkinBlueRS26;dmvcframeworkRT;dbxcds;adortl;dxSkinMcSkinRS26;dxSkinDarkSideRS26;dmvcframeworkDT;dxSpreadSheetCoreDialogsRS26;dxBarExtDBItemsRS26;dsnapxml;dbrtl;inetdbxpress;dxSkinOffice2007GreenRS26;IndyProtocols;dxSkinWhiteprintRS26;dxRichEditInplaceRS26;dxPSdxPDFViewerLnkRS26;dxSkinCaramelRS26;fmxase;$(DCC_UsePackage) 65 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 66 | Debug 67 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 68 | 1033 69 | 70 | 71 | DBXSqliteDriver;dxFlowChartRS26;dxPSdxMapControlLnkRS26;DBXDb2Driver;vclactnband;dxBarRS26;vclFireDAC;dxFireDACEMFRS26;tethering;dxSpreadSheetInplaceRichEditRS26;FireDACADSDriver;dxSkinVisualStudio2013BlueRS26;dxRichEditCoreRS26;dxPSdxSpreadSheetLnkRS26;dxSkinSharpPlusRS26;FireDACMSSQLDriver;vcltouch;vcldb;dxPSTeeChartRS26;dxSkinFoggyRS26;dxSkinVisualStudio2013DarkRS26;dxSkinOffice2013DarkGrayRS26;dxGDIPlusRS26;dxAuthorizationAgentsRS26;dxPSdxFCLnkRS26;vclib;dxPSLnksRS26;dxSkinSpringTimeRS26;FireDACDBXDriver;cxGridRS26;dxPsPrVwAdvRS26;dxPDFViewerRS26;vclx;dxPScxTLLnkRS26;dxSkinOffice2010BlueRS26;RESTBackendComponents;dxSkinOffice2016DarkRS26;dxSkinOffice2016ColorfulRS26;dxSkinMoneyTwinsRS26;VCLRESTComponents;dxSkinValentineRS26;dxSkinHighContrastRS26;vclie;bindengine;CloudService;dxmdsRS26;FireDACMySQLDriver;dxdborRS26;DataSnapClient;dxSkinOffice2013WhiteRS26;dxFireDACServerModeRS26;bindcompdbx;DBXSybaseASEDriver;IndyIPServer;cxPivotGridRS26;IndySystem;dxSkinDarkRoomRS26;cxTreeListdxBarPopupMenuRS26;dsnapcon;cxTreeListRS26;dxPScxPivotGridLnkRS26;cxSchedulerRibbonStyleEventEditorRS26;dxPSCoreRS26;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSpreadSheetRS26;dxBarExtItemsRS26;dxPSdxGaugeControlLnkRS26;emshosting;dxSkinLondonLiquidSkyRS26;dxSkinSevenRS26;DBXOdbcDriver;FireDACTDataDriver;FMXTee;dxSkinLiquidSkyRS26;soaprtl;DbxCommonDriver;dxRichEditControlCoreRS26;dxdbtrRS26;dxFlowChartAdvancedCustomizeFormRS26;dxDockingRS26;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;cxLibraryRS26;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;cxDataRS26;dxPScxSchedulerLnkRS26;dxSpreadSheetConditionalFormattingDialogsRS26;appanalytics;dxRibbonCustomizationFormRS26;cxSchedulerGridRS26;IndyIPClient;bindcompvcl;dxSkinVisualStudio2013LightRS26;TeeUI;dxADOEMFRS26;VclSmp;FireDACODBCDriver;dxRibbonRS26;DataSnapIndy10ServerTransport;dxPScxCommonRS26;dxRichEditDocumentModelRS26;DataSnapProviderClient;FireDACMongoDBDriver;dxPScxGridLnkRS26;dxSkinDevExpressDarkStyleRS26;dxSpreadSheetCoreRS26;RESTComponents;dxSkinGlassOceansRS26;DBXInterBaseDriver;dxSkinPumpkinRS26;dxPScxExtCommonRS26;emsclientfiredac;dxSkinXmas2008BlueRS26;DataSnapFireDAC;dxSkinOffice2007SilverRS26;cxPageControlRS26;dxSkinTheBezierRS26;dxSkinDevExpressStyleRS26;DBXMSSQLDriver;dxRichEditControlRS26;DatasnapConnectorsFreePascal;dxGaugeControlRS26;dxorgcRS26;dxPScxVGridLnkRS26;bindcompfmx;dxSkinOffice2007PinkRS26;DBXOracleDriver;dxSkinOffice2007BlueRS26;dxSkinStardustRS26;inetdb;CEF4Delphi;dxBarDBNavRS26;dxDBXServerModeRS26;dxSkinTheAsphaltWorldRS26;dxSkinSilverRS26;FmxTeeUI;dxSkinBlueprintRS26;emsedge;FireDACIBDriver;fmx;fmxdae;dxServerModeRS26;dxLayoutControlRS26;dxWizardControlRS26;dxSkiniMaginaryRS26;dxTabbedMDIRS26;dxEMFRS26;dbexpress;IndyCore;dxComnRS26;dsnap;dxSkinSharpRS26;DataSnapCommon;emsclient;FireDACCommon;DataSnapConnectors;cxSchedulerTreeBrowserRS26;dxADOServerModeRS26;soapserver;dxSkinOffice2007BlackRS26;cxVerticalGridRS26;dxtrmdRS26;FireDACOracleDriver;DBXMySQLDriver;dxSkinOffice2010BlackRS26;dxSkinMetropolisDarkRS26;cxEditorsRS26;DBXFirebirdDriver;cxSchedulerRS26;cxSchedulerWebServiceStorageRS26;dxPSdxLCLnkRS26;dxSkinBlackRS26;FireDACCommonDriver;FireDACCommonODBC;dxSkinOffice2013LightGrayRS26;dxMapControlRS26;inet;dxSpellCheckerRS26;dxSkinCoffeeRS26;IndyIPCommon;dxSpreadSheetCoreConditionalFormattingDialogsRS26;vcl;dxPSdxDBOCLnkRS26;dxSkinMetropolisRS26;FireDACDb2Driver;dxSpreadSheetReportDesignerRS26;dxPScxPCProdRS26;dxNavBarRS26;dxCoreRS26;cxExportRS26;TeeDB;FireDAC;dxThemeRS26;dxHttpIndyRequestRS26;dxPSPrVwRibbonRS26;dxSkinOffice2010SilverRS26;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;dxSkinSevenClassicRS26;cxPivotGridChartRS26;dxPSRichEditControlLnkRS26;dxPSDBTeeChartRS26;ibxpress;Tee;DataSnapServer;ibxbindings;dxPSdxDBTVLnkRS26;vclwinx;FireDACDSDriver;dxOfficeCoreRS26;dxTileControlRS26;dxSkinsCoreRS26;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;dxSkinLilianRS26;dxSkinSummer2008RS26;DBXInformixDriver;dxPSdxOCLnkRS26;dxSkinVS2010RS26;dxSkinBlueRS26;dbxcds;adortl;dxSkinMcSkinRS26;dxSkinDarkSideRS26;dxSpreadSheetCoreDialogsRS26;dxBarExtDBItemsRS26;dsnapxml;dbrtl;inetdbxpress;dxSkinOffice2007GreenRS26;IndyProtocols;dxSkinWhiteprintRS26;dxRichEditInplaceRS26;dxPSdxPDFViewerLnkRS26;dxSkinCaramelRS26;fmxase;$(DCC_UsePackage) 72 | 73 | 74 | DEBUG;$(DCC_Define) 75 | true 76 | false 77 | true 78 | true 79 | true 80 | 81 | 82 | false 83 | 84 | 85 | false 86 | RELEASE;$(DCC_Define) 87 | 0 88 | 0 89 | 90 | 91 | 92 | MainSource 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | Cfg_2 104 | Base 105 | 106 | 107 | Base 108 | 109 | 110 | Cfg_1 111 | Base 112 | 113 | 114 | 115 | Delphi.Personality.12 116 | Application 117 | 118 | 119 | 120 | fonetizaTests.dpr 121 | 122 | 123 | 124 | 125 | 126 | true 127 | 128 | 129 | 130 | 131 | true 132 | 133 | 134 | 135 | 136 | true 137 | 138 | 139 | 140 | 141 | fonetizaTests.exe 142 | true 143 | 144 | 145 | 146 | 147 | 1 148 | 149 | 150 | Contents\MacOS 151 | 1 152 | 153 | 154 | 0 155 | 156 | 157 | 158 | 159 | classes 160 | 1 161 | 162 | 163 | 164 | 165 | res\xml 166 | 1 167 | 168 | 169 | 170 | 171 | library\lib\armeabi-v7a 172 | 1 173 | 174 | 175 | 176 | 177 | library\lib\armeabi 178 | 1 179 | 180 | 181 | 182 | 183 | library\lib\mips 184 | 1 185 | 186 | 187 | 188 | 189 | library\lib\armeabi-v7a 190 | 1 191 | 192 | 193 | 194 | 195 | res\drawable 196 | 1 197 | 198 | 199 | 200 | 201 | res\values 202 | 1 203 | 204 | 205 | 206 | 207 | res\values-v21 208 | 1 209 | 210 | 211 | 212 | 213 | res\values 214 | 1 215 | 216 | 217 | 218 | 219 | res\drawable 220 | 1 221 | 222 | 223 | 224 | 225 | res\drawable-xxhdpi 226 | 1 227 | 228 | 229 | 230 | 231 | res\drawable-ldpi 232 | 1 233 | 234 | 235 | 236 | 237 | res\drawable-mdpi 238 | 1 239 | 240 | 241 | 242 | 243 | res\drawable-hdpi 244 | 1 245 | 246 | 247 | 248 | 249 | res\drawable-xhdpi 250 | 1 251 | 252 | 253 | 254 | 255 | res\drawable-mdpi 256 | 1 257 | 258 | 259 | 260 | 261 | res\drawable-hdpi 262 | 1 263 | 264 | 265 | 266 | 267 | res\drawable-xhdpi 268 | 1 269 | 270 | 271 | 272 | 273 | res\drawable-xxhdpi 274 | 1 275 | 276 | 277 | 278 | 279 | res\drawable-xxxhdpi 280 | 1 281 | 282 | 283 | 284 | 285 | res\drawable-small 286 | 1 287 | 288 | 289 | 290 | 291 | res\drawable-normal 292 | 1 293 | 294 | 295 | 296 | 297 | res\drawable-large 298 | 1 299 | 300 | 301 | 302 | 303 | res\drawable-xlarge 304 | 1 305 | 306 | 307 | 308 | 309 | res\values 310 | 1 311 | 312 | 313 | 314 | 315 | 1 316 | 317 | 318 | Contents\MacOS 319 | 1 320 | 321 | 322 | 0 323 | 324 | 325 | 326 | 327 | Contents\MacOS 328 | 1 329 | .framework 330 | 331 | 332 | Contents\MacOS 333 | 1 334 | .framework 335 | 336 | 337 | 0 338 | 339 | 340 | 341 | 342 | 1 343 | .dylib 344 | 345 | 346 | 1 347 | .dylib 348 | 349 | 350 | 1 351 | .dylib 352 | 353 | 354 | Contents\MacOS 355 | 1 356 | .dylib 357 | 358 | 359 | Contents\MacOS 360 | 1 361 | .dylib 362 | 363 | 364 | 0 365 | .dll;.bpl 366 | 367 | 368 | 369 | 370 | 1 371 | .dylib 372 | 373 | 374 | 1 375 | .dylib 376 | 377 | 378 | 1 379 | .dylib 380 | 381 | 382 | Contents\MacOS 383 | 1 384 | .dylib 385 | 386 | 387 | Contents\MacOS 388 | 1 389 | .dylib 390 | 391 | 392 | 0 393 | .bpl 394 | 395 | 396 | 397 | 398 | 0 399 | 400 | 401 | 0 402 | 403 | 404 | 0 405 | 406 | 407 | 0 408 | 409 | 410 | Contents\Resources\StartUp\ 411 | 0 412 | 413 | 414 | Contents\Resources\StartUp\ 415 | 0 416 | 417 | 418 | 0 419 | 420 | 421 | 422 | 423 | 1 424 | 425 | 426 | 1 427 | 428 | 429 | 1 430 | 431 | 432 | 433 | 434 | 1 435 | 436 | 437 | 1 438 | 439 | 440 | 1 441 | 442 | 443 | 444 | 445 | 1 446 | 447 | 448 | 1 449 | 450 | 451 | 1 452 | 453 | 454 | 455 | 456 | 1 457 | 458 | 459 | 1 460 | 461 | 462 | 1 463 | 464 | 465 | 466 | 467 | 1 468 | 469 | 470 | 1 471 | 472 | 473 | 1 474 | 475 | 476 | 477 | 478 | 1 479 | 480 | 481 | 1 482 | 483 | 484 | 1 485 | 486 | 487 | 488 | 489 | 1 490 | 491 | 492 | 1 493 | 494 | 495 | 1 496 | 497 | 498 | 499 | 500 | 1 501 | 502 | 503 | 1 504 | 505 | 506 | 1 507 | 508 | 509 | 510 | 511 | 1 512 | 513 | 514 | 1 515 | 516 | 517 | 1 518 | 519 | 520 | 521 | 522 | 1 523 | 524 | 525 | 1 526 | 527 | 528 | 1 529 | 530 | 531 | 532 | 533 | 1 534 | 535 | 536 | 1 537 | 538 | 539 | 1 540 | 541 | 542 | 543 | 544 | 1 545 | 546 | 547 | 1 548 | 549 | 550 | 1 551 | 552 | 553 | 554 | 555 | 1 556 | 557 | 558 | 1 559 | 560 | 561 | 1 562 | 563 | 564 | 565 | 566 | 1 567 | 568 | 569 | 1 570 | 571 | 572 | 1 573 | 574 | 575 | 576 | 577 | 1 578 | 579 | 580 | 1 581 | 582 | 583 | 1 584 | 585 | 586 | 587 | 588 | 1 589 | 590 | 591 | 1 592 | 593 | 594 | 1 595 | 596 | 597 | 598 | 599 | 1 600 | 601 | 602 | 1 603 | 604 | 605 | 1 606 | 607 | 608 | 609 | 610 | 1 611 | 612 | 613 | 1 614 | 615 | 616 | 1 617 | 618 | 619 | 620 | 621 | 1 622 | 623 | 624 | 1 625 | 626 | 627 | 1 628 | 629 | 630 | 631 | 632 | 1 633 | 634 | 635 | 1 636 | 637 | 638 | 1 639 | 640 | 641 | 642 | 643 | 1 644 | 645 | 646 | 1 647 | 648 | 649 | 1 650 | 651 | 652 | 653 | 654 | 1 655 | 656 | 657 | 1 658 | 659 | 660 | 1 661 | 662 | 663 | 664 | 665 | 1 666 | 667 | 668 | 1 669 | 670 | 671 | 1 672 | 673 | 674 | 675 | 676 | 1 677 | 678 | 679 | 1 680 | 681 | 682 | 1 683 | 684 | 685 | 686 | 687 | 1 688 | 689 | 690 | 691 | 692 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 693 | 1 694 | 695 | 696 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 697 | 1 698 | 699 | 700 | 701 | 702 | 1 703 | 704 | 705 | 1 706 | 707 | 708 | 709 | 710 | ..\ 711 | 1 712 | 713 | 714 | ..\ 715 | 1 716 | 717 | 718 | 719 | 720 | 1 721 | 722 | 723 | 1 724 | 725 | 726 | 1 727 | 728 | 729 | 730 | 731 | 1 732 | 733 | 734 | 1 735 | 736 | 737 | 1 738 | 739 | 740 | 741 | 742 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 743 | 1 744 | 745 | 746 | 747 | 748 | ..\ 749 | 1 750 | 751 | 752 | ..\ 753 | 1 754 | 755 | 756 | 757 | 758 | Contents 759 | 1 760 | 761 | 762 | Contents 763 | 1 764 | 765 | 766 | 767 | 768 | Contents\Resources 769 | 1 770 | 771 | 772 | Contents\Resources 773 | 1 774 | 775 | 776 | 777 | 778 | library\lib\armeabi-v7a 779 | 1 780 | 781 | 782 | 1 783 | 784 | 785 | 1 786 | 787 | 788 | 1 789 | 790 | 791 | 1 792 | 793 | 794 | Contents\MacOS 795 | 1 796 | 797 | 798 | Contents\MacOS 799 | 1 800 | 801 | 802 | 0 803 | 804 | 805 | 806 | 807 | 1 808 | 809 | 810 | 1 811 | 812 | 813 | 814 | 815 | Assets 816 | 1 817 | 818 | 819 | Assets 820 | 1 821 | 822 | 823 | 824 | 825 | Assets 826 | 1 827 | 828 | 829 | Assets 830 | 1 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | False 845 | True 846 | False 847 | 848 | 849 | DUnit / Delphi Win32 850 | GUI 851 | D:\Projetos\delphi\fonetiza\samples\fonetiza.dproj 852 | 853 | 854 | 855 | 12 856 | 857 | 858 | 859 | 860 | 861 | --------------------------------------------------------------------------------