Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

terça-feira, 25 de agosto de 2015

WINDOWS - Executar aplicativo com prioridade alta, em um nucleo específico do processador, entre outras coisas mais... (Start program with high priority)

Reações: 
Microsoft Windows [versão 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Todos os direitos reservados.

C:\Users\Felipe>start /?
Inicia uma janela separada para executar um programa ou comando especificado.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <nó de NUMA>] [/AFFINITY <máscara_afinidade_hexadecimal>] [/WAIT]
      [/B] [comando/programa] [parâmetros]

    "title"     Título a ser exibido na barra de títulos da janela.
    path        Diretório de início.
    B           Inicia um aplicativo sem criar nova janela. O aplicativo tem
                o tratamento de ^C ignorado. A menos que o aplicativo ative o
                processamento de ^C, o comando ^Break é a única forma de
                interromper o aplicativo.
    I           O novo ambiente será o ambiente original transferido para o
                cmd.exe e não é o ambiente atual.
    MIN         Inicia a janela minimizada.
    MAX         Inicia a janela maximizada.
    SEPARATE    Inicia um programa do Windows de 16 bits em um espaço de
                memória separado.
    SHARED      Inicia um programa do Windows de 16 bits em um espaço de
                memória compartilhado.
    LOW         Inicia o aplicativo na classe de prioridade IDLE.
    NORMAL      Inicia o aplicativo na classe de prioridade NORMAL.
    HIGH        Inicia o aplicativo na classe de prioridade HIGH.
    REALTIME    Inicia o aplicativo na classe de prioridade REALTIME.
    ABOVENORMAL Inicia o aplicativo na classe de prioridade ABOVENORMAL.
    BELOWNORMAL Inicia o aplicativo na classe de prioridade BELOWNORMAL.
    NODE        Especifica o nó da Arquitetura de Memória Não Uniforme (NUMA)
                com um inteiro decimal.
    AFFINITY    Especifica a máscara de afinidade do processador com um número
                hexadecimal. O processo está restrito a execução nesses
                processadores.

                A máscara de afinidade é interpretada de forma diferente quando
                /AFFINITY e /NODE são combinados. Especifique a máscara de
                afinidade se a máscara do processador do nó NUMA for deslocada
                para a direita para começar no bit zero. O processo é restrito
                a execução nesses processadores em comum entre a máscara de
                afinidade especificada e o nó NUMA. Se não houver processadores
                em comum, o processo estará restrito a execução no nó NUMA
                especificado.
    WAIT        Inicia o aplicativo e espera que ele finalize o
                comando/programa.
                Se for um comando cmd interno ou um arquivo em lotes, o
                processador do comando será executado com a opção /K para
                cmd.exe. Isso significa que a janela permanecerá depois que o
                comando for executado.

                Se não for um comando cmd interno nem um arquivo em lotes,
                ele será um programa executado como um aplicativo em janela
                ou um aplicativo em console.

    parameters  São os parâmetros transferidos para o comando/programa.

OBSERVAÇÃO: As opções SEPARATE e SHARED não são suportadas em plataformas de
            64 bits.

A especificação /NODE permite que sejam criados processos de uma forma que
aproveite localidade de memória em sistemas NUMA. Por exemplo, dois processos
que se comuniquem pesadamente um com o outro por meio de memória compartilhada
podem ser criados para compartilhar o mesmo nó NUMA preferencial a fim de
minimizar latências de memória.Eles alocam memória do mesmo nó NUMA, quando
for possível, e ficam liberados para executar em processadores fora do nó
especificado.

    start /NODE 1 application1.exe
    start /NODE 1 application2.exe

Esses dois processos podem ser ainda mais restringidos para executar em
processadores específicos dentro do mesmo nó NUMA. No exemplo a seguir,
application1 é executado nos dois processadores de ordem inferior do nó,
enquanto application2 é executado nos próximos dois processadores do nó. Esse
exemplo presume que o nó especificado tem no mínimo quatro processadores
lógicos.Observe que o número do nó pode ser alterado para qualquer número de nó
válido para aquele computador sem precisar alterar a máscara de afinidade.

    start /NODE 1 /AFFINITY 0x3 application1.exe
    start /NODE 1 /AFFINITY 0xc application2.exe

Se as extensões de comando estiverem ativadas, a invocação de comando externa
através da linha de comando ou do comando START será alterada como a seguir:

Arquivos não executáveis podem ser chamados através de sua associação
    de arquivos apenas ao digitar o nome do arquivo como um comando.
    (e.g.  WORD.DOC iniciaria o aplicativo associado com a extensão de arquivo
    .DOC). Consulte os comandos ASSOC e FTYPE para obter informações sobre
    como criar essas associações a partir de um script de comando.

Ao executar um aplicativo que seja um aplicativo GUI de 32 bits, o CMD.EXE
    não espera o aplicativo terminar para voltar ao prompt de comando.
    Esse novo comportamento NÃO ocorre se estiver sendo executado
    a partir de um script de comando.

Ao executar uma linha de comando cujo primeiro token seja a cadeia de
    caracteres "CMD " sem uma extensão ou qualificador de caminhos, o "CMD"
    é substituído pelo valor da variável COMSPEC. Isso evita selecionar o *
    CMD.EXE na pasta atual.

Ao executar uma linha de comando cujo primeiro token NÃO contenha uma
    extensão, o CMD.EXE usará o valor da variável de ambiente PATHEXT
    para determinar quais extensões serão procuradas e em que ordem.
    O valor padrão da variável PATHEXT é:

        .COM;.EXE;.BAT;.CMD

    Observe que a sintaxe é a mesma da variável PATH, com
    ponto-e-vírgula separando os diferentes elementos.

Ao procurar por um executável, se não houver correspondência em nenhuma
extensão, ele verifica se o nome corresponde a um nome de pasta.
Se corresponder, o comando START inicia o Explorer nesse caminho.
Se for feito a partir da linha de comando, será o equivalente a fazer CD /D
 para esse caminho.

terça-feira, 18 de agosto de 2015

DELPHI - Alterar brilho e contraste de imagem

Reações: 
Retirado de:
http://imageprocessingindelphi.blogspot.com.br/2008/08/coding-contrast-enhancement-in-delphi.html


Coding Contrast Enhancement in Delphi

Designing the GUI and The Processing Algorithm
To make our contrast enhancement processing, we need to design the graphical user interface (GUI) first. The GUI is similar with our previous brightness modification user interface. The following steps explains how to make it:
  1. Open (or download first) our previous brightness modification project.
  2. Create a new form (File->New->Form).
  3. Change the name property to ContrastForm, change the Caption property to 'Contrast'. Set the FormStyle property to fsMDIChild. Resize the form to fit the main form (parent form).
  4. On the Object Inspector, click on Events tab, and double click in the OnClose event. You'll be directed to the event handler, and assign the Action variable with caFree between begin and end
    1. procedure TContrastForm.FormClose(Sender: TObject;  
    2. var Action: TCloseAction);  
    3. begin  
    4. Action:=caFree;  
    5. end;  
  5. Add two scroll bar components (from the standard component pallet) to the form. Change the Name property to CenterScrollBar and ContrastScrollBar. Set the Minimum property of CenterScrollBar to 0 and the Maximum to 255. Set the minimum property of ContrastScrollBar to -100 and the maximum to 100. Set the position of CenterScrollBar to 127, set the position of ContrastScrollBar to 0.
  6. Place two label components (from the standar component pallet) to the form, set the layout to associate each label to each scroll bar. Change the Label's caption to 'Center' and 'Contrast' accordingly (see Figure 1).
  7. Add two buttons (from standard component pallet), change their caption to OK and Cancel, and set their name to OKButton and CancelButton accordingly.
  8. Save the unit as ContrastUnit (using menu File->Save As).
  9. Go to Project->Options->Form, point to ContrastForm to select, and press the > button, so the ContrastForm will move to Available forms box, then press OK.
Figure 1. Contrast GUI Form

To modify the image, it's common to backup the original image, so we can do a cancel operation after displaying the change on the original image form. To do this, we have to provide TImage object in the form to temporarily store the image. A procedure (SetContrast) to associate the image input to the brightness form is also needed.

  1. Edit the BrightnessForm abstraction to provide TImage (TemporaryImage and OriginalImage) object and the SetBrightness procedure. A boolean flag (Applied) is also needed to mark whether a Cancel or OK button has been pressed. Add ExtCtrls under uses in the Interface section because we're gonna use TImage component. Edit as shown below:
    1. type  
    2. TContrastForm = class(TForm)  
    3. CenterScrollbar: TScrollBar;  
    4. ContrastScrollBar: TScrollBar;  
    5. Label1: TLabel;  
    6. Label2: TLabel;  
    7. OKButton: TButton;  
    8. CancelButton: TButton;  
    9. procedure FormClose(Sender: TObject; var Action: TCloseAction);  
    10. private  
    11. { Private declarations }  
    12. TemporaryImage:TImage;  
    13. OriginalImage:TImage;  
    14. Applied:boolean;  
    15. public  
    16. { Public declarations }  
    17. procedure SetContrast(Image: TImage);  
    18. end;  
  2. Write the SetContrast procedure definition in the implementation section:
    1. procedure TContrastForm.SetContrast(Image: TImage);  
    2. begin  
    3. try  
    4. begin  
    5. TemporaryImage:=Image;  
    6. TemporaryImage.Picture.Bitmap.PixelFormat:=pf24bit;  
    7. OriginalImage:=TImage.Create(self);  
    8. OriginalImage.Picture.Bitmap.Assign(Image.Picture.Bitmap);  
    9. end;  
    10. except  
    11. begin  
    12. Free; //free the contrast form  
    13. ShowMessage('Cannot complete the operation');  
    14. end;  
    15. end;  
    16. end;  
  3. Double click the CenterScrollBar component, the you'll be directed to its event handler, edit as shown below
    1. procedure TContrastForm.CenterScrollbarChange(Sender: TObject);  
    2. var  
    3. i,j:Integer;  
    4. temp:real;  
    5. pixelPointer:PByteArray;  
    6. originalPixelPointer:PByteArray;  
    7. begin  
    8. try  
    9. begin  
    10. if TemporaryImage.Picture.Bitmap.PixelFormat=pf8bit then  
    11. for i:=0 to TemporaryImage.Picture.Height-1 do  
    12. begin  
    13. pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[i];  
    14. originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[i];  
    15. for j:=0 to TemporaryImage.Picture.Width-1 do  
    16. begin  
    17. temp:=((originalPixelPointer[j]-CenterScrollBAr.Position)  
    18. *exp(ContrastScrollBar.Position/50))  
    19. + CenterScrollBar.Position;  
    20. if temp<0>255 then temp:=255;  
    21. pixelPointer[j]:=round(temp);  
    22. end;  
    23. end;  
    24. if TemporaryImage.Picture.Bitmap.PixelFormat=pf24bit then  
    25. for i:=0 to TemporaryImage.Picture.Height-1 do  
    26. begin  
    27. pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[i];  
    28. originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[i];  
    29. for j:=0 to TemporaryImage.Picture.Width-1 do  
    30. begin  
    31. temp:=((originalPixelPointer[3*j]-CenterScrollBAr.Position)  
    32. *exp(ContrastScrollBar.Position/50))  
    33. + CenterScrollBar.Position;  
    34. if temp<0>255 then temp:=255;  
    35. pixelPointer[3*j]:=round(temp);  
    36. temp:=((originalPixelPointer[3*j+1]-CenterScrollBAr.Position)  
    37. *exp(ContrastScrollBar.Position/50))  
    38. + CenterScrollBar.Position;  
    39. if temp<0>255 then temp:=255;  
    40. pixelPointer[3*j+2]:=round(temp);  
    41. temp:=((originalPixelPointer[3*j+2]-CenterScrollBAr.Position)  
    42. *exp(ContrastScrollBar.Position/50))  
    43. + CenterScrollBar.Position;  
    44. if temp<0>255 then temp:=255;  
    45. pixelPointer[3*j+2]:=round(temp);  
    46. end;  
    47. end;  
    48. TemporaryImage.Refresh;  
    49. end;  
    50. except  
    51. begin  
    52. Free;  
    53. ShowMessage('Cannot complete the operation');  
    54. end;  
    55. end;  
    56. end;  

    In the code shown above, you can see the contrast gain is computed as exp(ContrastScrollBar.Position/50), with this formula, when the scroll bar position is zero (the default), the gain will be exp(0/50)=1, and at maximum the contrast gain will be exp(100/50)=100, and at the minimum the contrast gain will be exp(-100/50)=1/100.
  4. On the ContrastForm, double clicks the OKButton component, you'll be directed to its event handler, then edit as shown below:
    1. procedure TContrastForm.OKButtonClick(Sender: TObject);  
    2. begin  
    3. Applied:=true;  
    4. Close();  
    5. end;  
  5. Double click the CancelButton component in the ContrastForm, and you'll be directed to its event handler, edit as shown below:
    1.  procedure TContrastForm.CancelButtonClick(Sender: TObject);  
    2. begin  
    3. Applied:=false;  
    4. Close();  
    5. end;  
  6. To implement the decision whether the image on the source form will be modified or reverted to the original bitmap, edit the ContrastForm's OnClose event handler as shown below:
    1. procedure TContrastForm.FormClose(Sender: TObject; var Action: TCloseAction);  
    2. begin  
    3. if Applied=false then  
    4. TemporaryImage.Picture.Bitmap.Assign(  
    5. OriginalImage.Picture.Bitmap);  
    6. Action:=caFree;  
    7. end;  
Calling the GUI Module from The Main Application
To show the contrast enhancement interface and to connect the active image form to the contrast GUI, we need to add a new item in the main menu. Double click the main menu component in the main form, and add a Contrast menu item under menu Image (Image->Contrast, see Figure 2.


Figure 2. Contrast Menu Item

Write the event handler for the menu as shown below:
  1. procedure TMainForm.Contrast1Click(Sender: TObject);  
  2. begin  
  3. if ImageForm<>nil then  
  4. begin  
  5. ImageForm:=TImageForm(ActiveMDIChild);  
  6. try  
  7. begin  
  8. Application.CreateForm(TContrastForm,ContrastForm);  
  9. ContrastForm.SetContrast(ImageForm.Image1);  
  10. end;  
  11. except  
  12. ContrastForm.Free;  
  13. ShowMessage('Cannot complete the operation');  
  14. end;  
  15. end;  
  16. end;  
Figure 3. Contrast Processing Execution
Don't forget to add ContrastUnit under the uses in the MainUnit's implementation. Use menu File->Use Unit (Alt+F11). Now you can save, compile and run the executable. The execution look like figure 3.

Source Code Download
The source code can be downloaded here for Delphi 7 project, and here for the Turbo Delphi Explorer source code. Besides contains new source codes for contrast enhancement, if you compare to our previous brightness modification project's source codes, you'll see that in the codes for the brightness manipulation codes has also been updated to accommodate both two different image formats, pf8bit (8 bit monochrom/gray sacle) and pf24bit (true color). When applied to a monochrome image, sliding one scroll bar will move other two scroll bars to reflect that monochrome image doesn't have any separate RGB components.

quarta-feira, 5 de agosto de 2015

WINDOWS - Windows 10: como ativar o “Modo Deus” no novo sistema operacional

Reações: 
Retirado de:
http://www.tecmundo.com.br/windows-10/84243-windows-10-ativar-modo-deus-novo-sistema-operacional.htm


O lendário “Modo Deus” (ou “GodMode”, no original em inglês) não é nenhuma novidade. Ele já estava presente em versões mais antigas do Windows e sempre ajudou muito a vida de administradores de sistemas ou usuários avançados que tinham a necessidade de efetuar configurações mais complexas no computador.
Vale aqui uma pequena explicação para quem nunca ouviu falar do conceito: o GodMode é nada mais do que um painel de controle especial que reúne em um único lugar todas as ferramentas que você precisa para gerenciar em detalhes a sua máquina. Contas de usuários, backups, organização de dispositivos conectados (incluindo impressoras), segurança, perfis de energia, fontes, firewall, data e hora etc.
O processo para ativar esse recurso precioso no recém-lançado Windows 10 é incrivelmente simples. Na Área de trabalho do seu PC, clique com o botão direito do mouse em qualquer região limpa, e, através do menu de contexto que se abre, crie uma nova pasta qualquer, por enquanto, nem é preciso atribuir um nome ao tal diretório.

ADVERTISEMENT
Em seguida, selecione a pasta e pressione a tecla F2 (ou clique nela com o botão direito do mouse e selecione a opção “Renomear”) Agora vem a parte mágica: renomeie o diretório como “GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}” (sem as aspas) e pressione a tecla Enter. Conforme exemplificado na imagem abaixo, perceba que o ícone da pasta muda completamente.

Pronto! Ao dar dois cliques no ícone, você será apresentado ao painel do Modo Deus. Perceba que todas as ferramentas do GodMode estão separadas em diferentes categorias, e que estas estão ordenadas em ordem alfabética. Use o recurso à vontade, mas lembre-se de jamais renomear a “pasta/ícone”, pois o acesso será perdido instantaneamente e você precisará refazer o procedimento desde o início.

Se você ainda não tem um Windows original para atualizar, clique aqui e compre o Windows 10 direto na loja oficial da Microsoft.

terça-feira, 4 de agosto de 2015

DELPHI - Componentes

Reações: 
Retirado de:
http://getawesomeness.com/get/delphi

Awesome Delphi

A curated list of awesome Delphi frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
Note that only open-source projects are considered. Dead projects are mainly ignored except for those which do not have alive analogs. Feel free to suggest other missing nice projects either by comments or pull requests.
- [OS](#os)
- [Unit Testing](#unit-testing)
- [Utilities](#utilities)

General Libraries

Big general-purpose libraries
  • JVCL. Library of over 600 Delphi components developed by "Project JEDI" members. // GUI, algorithms, classes, API headers etc.
  • Alcinoe. Components suite for Delphi. // Network: FTP/Http/NNTP/POP3/SMTP, ISAPI, WinInet Http/FTP clients; DB: Firebird/MySQL/SQLite3/Memcached/MongoDb/SphinxQL; XML/JSON Parser; ZLIB; Cryptography: AES, Blowfish, MD5, SHA, secure keyed MD5/SHA; Other: Self-Balancing Binary Trees, expression evaluator
  • Fundamentals Code Library. Collection of Delphi / FreePascal code units. Includes libraries for Unicode, Strings, Data Structures, Sockets and Mathematics. // Utils: ZLIB compression; JSON; XML; ProtocolBuffers; Hashes: XOR, CRC, Adler, MD5, SHA, secure keyed MD5/SHA, etc; Network: blocking TCP client/server, HTTP(S) via SSL3/TLS1.0/TLS1.1/TLS1.2 (fully native); SQL parser; BitCoin MtGox client; Blaise script engine; Cipher: AES, DES, FUNE, RC2/4, RSA; Maths: matrix, complex, statistics
  • Spring4D. Open-source code library for Embarcadero Delphi 2010 and higher. It consists of a number of different modules that contain a base class library (common types, interface based collection types, reflection extensions) and a dependency injection framework. Includes Encryption Library. // Collections and other containers using Generics and based on IEnumerable, probably more accurate and featured than RTL analogs; crypto: CRC, DES, MD5, SHA; file utils etc
  • TheUnknownOnes. Huge heap of classes, components, utilities for almost every purpose. Nearly undocumented and seems not very up-to-date though.
  • CNVCL. CnPack Component Package. Large collection of visual components, classes and utilities. // Lots of useful stuff; documentation and comments mainly in Chinese
  • mORMot. Client-Server ORM/ODM SOA MVC framework for Delphi 6 and higher, or FPC 2.7. Direct SQL/NoSQL database access, ORM/ODM over objects, RESTful ORM and SOA services via interfaces over high performance HTTP server, MVC/MVVM web sites, testing including mocks and stubs, logging, huge documentation.

Multimedia

Audio

  • Audio Tools Library. For manipulating many audio formats file information. //Abandoned since 2005.
  • Delphi ASIO & VST Project. Framework for writing applications using the ASIO interface and VST plugins. It comes with countless DSP algorithms all demonstrated in dozens of examples. //Not very active lately, but the trunk is in a usable state .
  • NewAC — New Audio Components. Designed to help your Delphi programs perform different sound processing tasks. With NewAC you can play audio stored in many formats (wav, Ogg Vorbis, FLAC, Monkey Audio, WavPack, MP3, Windows WMA, DTS, AC-3 (Dobly Surround), VOB (DVD files)). // Playback, recording, tag read/write, some audio editing tasks and conversions

Video

  • DSPack. Set of components and classes to write Multimedia Applications using MS Direct Show and DirectX technologies.
  • Delphi-OpenCV. Translation of OpenCV library header files in Delphi // Includes FFMPEG headers
  • [FFmpeg Delphi/Pascal Headers] (http://www.delphiffmpeg.com/headers). Open source translation of FFMPEG headers.
  • PasLibVlc. Interface to VideoLAN libvlc.dll and VCL player component for Delphi / FreePascal based on VideoLAN

Graphic

  • Graphics32. Designed for fast 32-bit graphics handling on Delphi, Kylix and Lazarus. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives, and in most cases Graphics32 outperforms the standard TCanvas classes. It is almost a hundred times faster in per-pixel access and about 2-5 times faster in drawing lines.
  • GraphicEx. Addendum to Delphi's Graphics.pas to enable your application to load many common image formats. This library is primarily designed to load images as background (buttons, forms, toolbars) and textures (DirectX, OpenGL) or for image browsing and editing purposes as long as you don't need to save images.
  • Vampyre Imaging Library. Cross-platform native Object Pascal (Delphi and Free Pascal) image loading, saving, and manipulation library.
  • CCR-EXIF. Library to read and write Exif, IPTC and XMP metadata from JPEG, TIFF and PSD images.
  • KIcon. This component makes sense if a more complex manipulation with icons (or better icon files *.ico) than just viewing is needed. Full PNG icon image support, correct rendering, icons with alpha channel.
  • Delphi Twain. The library allows you to easily access scanning functions from Delphi and Lazarus.
  • Synopse PDF. Fully featured Open Source PDF document creation library for Delphi, embedded in one unit. Pure Delphi code, Delphi 5 up to XE7, for Win32 and Win64 platforms.
  • PowerPDF. VCL component to create PDF docment visually. Like Forms, you can design PDF document easily on Delphi or C++Builder IDE.
  • IGDI+. The free open source library allows quick and easy implementations of complex GDI+ applications, in a natural Delphi-friendly code.
  • GLScene. OpenGL based 3D library for Delphi. It provides visual components and objects allowing description and rendering of 3D scenes in an easy, no-hassle, yet powerful manner. GLScene is not just an OpenGL wrapper or utility library, it has grown to become a set of founding classes for a generic 3D engine with Rapid Application Development in mind. GLScene allows you to quickly design and render 3D scenes without having to learn the intricacies of OpenGL, if you know how to design a TForm, you'll easily master the basic operations of GLScene. The library comes with a large collections of demos showcasing the ease of use, and demonstrating RAD wasn't done at the expense of CPU/GPU horsepower.
  • SynGdiPlus. Enables an application to load and save GIF, TIF, PNG and JPG pictures. It also allows anti-aliased drawing from any TMetaFile. That is, you can play a .emf content using GDI+ instead of GDI, for much better rendering result.
  • TGdiPages (docs) Fast and efficient code-based reporting component, with preview form and PDF export.

Communications

Network

Socket communication, network protocols, encodings, etc
  • Internet Component Suite. Asynchronous-based library composed of various Internet components and applications. Clients/servers for TCP, UDP, raw sockets, FTP, SMTP, POP3, NNTP, HTTP, Telnet and more. Supports SSL and TLS with the help of OpenSSL. Also includes Mime Decoder, SHA1/MD4/MD5 hashes, DES encryption.
  • Indy. Network components for Delphi, C++Builder, Delphi.NET, and FreePascal // All-in-one network library based on blocking sockets and threads. Included in default RAD studio installation since 2006.
  • Ararat Synapse. Pascal TCP/IP Library for Dephi, C++Builder, Kylix and FreePascal. Deals with network communication by means of blocking (synchronous) sockets or with limited non-blocking mode. This project not using asynchronous sockets! The Project contains simple low level non-visual objects for easiest programming without problems (no required multithread synchronisation, no need for windows message processing,…) Great for command line utilities, visual projects, NT services,… // TCP, UDP, ICMP, RAW; ICMP, DNS, SMTP, HTTP, SNMP, NTP, FTP, LDAP, NNTP, Telnet; IPv6; SOCKS proxy; SSL/TLS (via OpenSSL or Windows CryptoApi); PING; character code transcoding; MIME coding and decoding; CRC16, CRC32, MD5 and HMAC-MD5.
  • Internet Professional. Set of VCL components providing Internet connectivity for Borland Delphi & C++Builder. iPRO includes POP3, SMTP, NNTP, FTP, HTTP, Instant Messaging, & HTML viewer components, as well as components for low-level socket access. // Seems abandoned but contains pretty large set of features incl ICMP, POP, SMTP, HTTP, NNTP, NTP, FTP, SMTP; HTML parser and viewer; MIME utils; cookies, certificates, caching, encryption etc
  • SynCrtSock. Features several sockets and HTTP client-server classes, including a high-performance http.sys based server under Windows, and a new thread-pool powered socket server. // Also implements http.sys binding under Windows and cURL binding under nix

Serial port

  • Synaser. Library for blocking communication on serial ports. It is non-visual class as in Synapse, and programmer interface is very similar to Synapse.
  • Async Professional (Newest and maintained version for recent compiler version only). Comprehensive communications toolkit for Embarcadero Delphi, C++Builder, & ActiveX environments. It provides direct access to serial ports, TAPI and the Microsoft Speech API (TTS/Speech recognition). It supports faxing, terminal emulation, VOIP, RAS dial & more. // Seems outdated (last update in 2011) but adapted to XE and should be easy to use in newer versions. The project is also very thoroughly documented. Second link points to an adapted version for newest compiler versions.

GUI

Visual components

Control packs

Large sets of GUI controls
  • Cindy components. Packages with 71 components: VCL controls (labels, buttons, panels, Edits, TabControls, StaticText) with features like background gradient, colored bevels, wallpaper, shadowText, caption orientation etc...
  • Orpheus (Newest and maintained version for recent compiler version only). Award-winning UI toolkit for Borland Delphi & C++Builder. It contains over 120 components covering everything from data entry to calendars and clocks. Other noteworthy components include an Object Inspector, LookOut bar & report views. // Advanced edits, comboboxes, grids + component (de)serializers. GUI components look rather old-style, theme support might be limited. Package contains many demos but no docs seem available. Second link points to an adapted version for newest compiler versions.
  • KControls. Control components. All controls have been written with the aim to become both cross-IDE compatible (Delphi/C++Builder VCL and Lazarus LCL) and cross-platform compatible in Lazarus. // Most useful are TKGrid with its DB-aware heritage TKDBGrid — a very full-featured grid implementation incl. inplace editors. There's also hex editor, print preview, editors, labels, buttons etc.
  • D.P.F Delphi Android / D.P.F Delphi iOS native components. D.P.F Delphi Native Components, 100% iOS Performance and styles. Develop iPhone & iPad & iPod Touch applications with fast native performance and native styles. Use native Android controls and services. Fast native performance. Mixed with FM VCL controls. Can be quick updated with latest Android controls & features.
  • Essentials. Contains 13 native VCL controls for Embarcadero Delphi and C++Builder. The controls include drop-down calendars and calculators, roll-up dialogs, 3-D labels, tiled backgrounds, scrolling messages, menu buttons, and more.

Single controls

  • EasyListView. Part of VirtualShellTools for the Listview but can be used for a TListview Replacement that is faster and more customizable. // Feature-rich Listview implementing virtual (callback-based) MVC paradigm.
  • VirtualTreeView. Treeview control built from ground up. Many years of development made it one of the most flexible and advanced tree controls available today. //Extremely flexible visual component implementing virtual (callback-based) MVC paradigm. Could be also used as a listview or grid. Used in RAD Studio GUI.
  • HtmlViewer. Delphi/Lazarus HtmlViewer/FrameViewer. // Html visualiser supporting majority of tags, inline styles and CSS.
  • SynEdit (mirror at GitHub). Syntax highlighting edit control, not based on the Windows common controls. SynEdit is compatible with both Delphi and Kylix
  • Delphi Chromium Embedded. Embedding Chromium in Delphi, tested on Delphi 2010, XE, XE2, Delphi 7. // Several DLLs required
  • ATViewer. Delphi components to view various file types: text, binary, images, multimedia, webpages, etc. // Used in Universal Viewer software. Could be used to display hex dumps, features fast display of unlimited size files/streams. Supports Total Commander Lister plugins.
  • ATImageMap. Component designed to show many images (parts of the whole image) as a single map. For example, you may have array of images, 200 by X, and 100 by Y — control will show them as a single map. Component also allows to draw paths: each path consists of many lines, points, and icons.
  • TChromeTabs. Comprehensive implementation of Google Chrome's tabs for Delph7 — Delphi XE7

Other GUI

  • GMLib (Google Maps Library). Components for Delphi/C++ Builder that encapsulate the GoogleMaps API to administrate a map, markers, polygons, rectangles, polylines,... All objects that you can put into a map.
  • VCL Styles Utils. Collection of classes and style hooks, which extend, fix QC reports and add new features to the VCL Styles. // Collection of patches/enhancements that promote stock VCL style engine to a new level. Styling for Inno setup and NSIS also available.
  • TaskbarListComponents. Set of components designed as Delphi wrappers for the Windows 7 Taskbarlist Interfaces (e.g. ITaskbarlist3) // Requires JVCL

Database

  • ZeosLib. Set of database components for MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle and SQLite.
  • Unified Interbase. Set of components to use Interbase, FireBird and YAFFIL. These components were born from the need to use Interbase, FireBird or Yaffil indifferently as fast as possible in a Multithreading environment, a Server for example.
  • ASQLite. Delphi SQLite set of DAC components from aducom software, based on their latest release for Delphi 2009, and updated to support newer editions of Delphi as included in RemObjects Data Abstract for Delphi.
  • TxQuery. TDataSet descendant component that can be used to query one or more TDataSet descendant components using SQL statements. It is implemented in Delphi 100% source code, no DLL required, because it implements its own SQL syntax parser and SQL engine.
  • Delphi-ORM. Object-Relational Mapping for Delphi XE7, XE6, XE5, XE4, XE3 and XE2 (Win32). Supports for FirebirdSQL, SQLServer and SQLite3.
  • delphimemcache. Implements a thread safe client for memcached. // Requires Indy 10
  • SynDB (docs). High performance direct access to SQLite3, Oracle, MSSQL, PostgreSQL, Firebird, MySQL, ODBC, OleDB, including remote HTTP connection and direct JSON support.
  • SynMongoDB (docs). Offers direct low-level access to any MongoDB server, its custom data types, JSON or via TDocVariant custom variant document storage.

Scripting

Using script engine in your applications
  • Pascal Script. Free scripting engine that allows you to use most of the Object Pascal language within your Delphi or Free Pascal projects at runtime. Written completely in Delphi, it is composed of a set of units that can be compiled into your executable, eliminating the need to distribute any external files. Pascal Script started out as a need for a good working script, when there were none available at the time.
  • DWScript. Object-oriented scripting engine for Delphi based on the Delphi language, with extensions borrowed from other Pascal languages (FreePascal, Prism, etc.). It introduces a few Pascal language extensions of its own as well.
  • Delphi-Javascript. Javascript engine for delphi based on Mozilla's Spidermonkey. //Spidermonkey DLL required
  • Blaise. Open-source object-oriented scripting language. Language features: Object-oriented; Unicode support; Optional typing, ie dynamic or static typing; Richly typed; Higher-level mathematics support, for example Complex numbers, Rational numbers and Matrices; Virtual Machine architecture; Co-routines; Familiar language syntax, influenced by Object Pascal, Python and Ada.
  • SpiderMonkey. Binding for Mozilla JavaScript engine, including JIT and multi-threading, with easy objects access via Delphi variants. // Spidermonkey DLL required

Non-visual Classes/Utils

Compression

  • FWZip. Classes to work with Zip archives using Store and Deflate methods, supports ZIP64, DataDescryptors, PKWARE encryption, NTFS attributes, Utf8 in filenames. //Uses stock ZLIB.obj that gets compiled into binary
  • Abbrevia (Newest and maintained version for recent compiler version only). Advanced data compression toolkit for Delphi and C++Builder. Supports PKZIP, Microsoft CAB, tar, gzip, and bzip2 archives, and can create self-extracting executables. On Windows it also provides Delphi wrappers for the LZMA, Bzip2, and WavPack SDKs, and PPMd decompression. Abbrevia also has several visual controls that simplify displaying and manipulating archives, including treeview and listview components. Features: Unicode filenames in all archive formats; Decompress most .zipx and legacy (PKZIP v1) zips; ZIP64 support for archives larger than 2GB; Spanned and split zip archives; Cross-platform (Windows, OS X, and Linux); No DLLs required; Includes COM component; Extensive documentation // Second link points to an adapted version for newest compiler versions.
  • SynLZ SynLZO SynZip. Several high speed compression units, featuring ZIP, LZO and SynLZ algorithm, in pascal and optimized assembler.

Encryption

  • Delphi Encryption Compendium (DEC). Cryptographic library for Delphi & C++ Builder. Symmetric cryptographic functions: Blowfish, Twofish, IDEA, Cast128, Cast256, Mars, RC2, RC4, RC5, RC6, Rijndael / AES, Square, SCOP, Sapphire, 1DES, 2DES, 3DES, 2DDES, 3DDES, 3TDES, 3Way, Gost, Misty, NewDES, Q128, SAFER, Shark, Skipjack, TEA, TEAN; Block cipher modes of operation: CTSx, CBCx, CFB8, CFBx, OFB8, OFBx, CFSx, ECBx; Hashes: MD2, MD4, MD5, RipeMD128, RipeMD160, RipeMD256, RipeMD320, SHA, SHA1, SHA256, SHA384, SHA512, Haval128, Haval160, Haval192, Haval224, Haval256, Tiger, Panama, Whirlpool, Whirlpool1, Square, Snefru128, Snefru256, Sapphire. // No updates since 2010 but features list so huge that it couldn't be ignored
  • LockBox (Newest and maintained version for recent compiler version only). Delphi library for cryptography. Currently supported Delphi XE6. It provides support for AES, DES, 3DES, Blowfish, Twofish, SHA2 (including the new SHA-512/224 & SHA-512/256), MD5; ECB, CBC, CFB8, CFB, CTR, ECB, OFB, PCBC chaining modes, RSA digital signature and verification. Has interface to OpenSSL library. // Check outthis page as well for alternative version.
  • SynCrypto. Fast cryptographic routines (hashing and cypher), implementing AES, XOR, RC4, ADLER32, MD5, SHA1, SHA256 algorithms, optimized for speed (tuned assembler and VIA PADLOCK optional support).

XML/JSON

  • [OmniXML] (http://code.google.com/p/omnixml). XML parser written in Delphi. Full support for Document Object Model (DOM) Level 1 specification; Supports Extensible Markup Language (XML) 1.0 (Second Edition) specification; Has built-in support for different code pages (main 8-bit code pages, UTF-8, UTF-16); Is compatible with MS XML parser; Fast parsing even large and highly structured documents; Includes helper functions to ease processing XML documents; Simplified XPath support.
  • SAX for Pascal. Designed to implement the Simple API for XML Parsing in Pascal/Delphi. // Callback-based XML parser, useful for processing huge XML streams.
  • KDS XML. Class library for streamed parsing, validating and generating XML. It is written in Object Pascal/Delphi and works on Win32 (Delphi) and Linux (Kylix). Parts of it depend on the SAX for Pascal interface specifications.
  • XML Partner. Helps add the power of XML to Borland Delphi, C++ Builder, and Kylix projects through native, easy to use VCL and CLX components. These powerful components simplify the process of creating, modifying, and parsing XML data documents. // Seems dead, check out this page for probably newer version.
  • Open XML. Provides a wide range of methods, components and foundation classes. It can be used for Win32/Kylix as well as for .NET development.
  • SuperObject. Parser/writer for JSON data format. This toolkit is designed to work with Delphi and FreePascal (win32, win64, linux32, linux64, MacOSX Intel)
  • OXml. New XML library for Delphi and Lazarus, developed in late 2013. I took some inspiration from OmniXML but wrote the library completely from scratch. The aim of OXml is to be the most versatile and fastest XML library for the Pascal language. OXml features a SAX parser, DOM implementation, a sequential DOM parser a direct XML reader/writer and a vendor for Delphi's XmlIntf.TXMLDocument. OXml supports all Delphi versions starting from Delphi 4 on all platforms: Win32, Win64, OSX, iOS, Android. OXml supports Lazarus 1.0 and newer on all platforms (tested Win32, Win64, Linux, MacOSX).
  • Libxml2 for pascal. Pascal units accessing the popular XML API from Daniel Veillard. This should be usable at least from Kylix and Delphi, but hopefully also from other Pascal compilers (like freepascal).
  • NativeXml. This component contains a small-footprint Object Pascal (Delphi) XML implementation that allows to read and write XML documents. You basically only need one unit and you can simply add it to the "uses" clause. You can use this software to read XML documents from files, streams or strings. The load routine generates events that can be used to display load progress on the fly. You can also use it to create and save XML documents.
  • Chimera. Open Source (MIT License) library for Delphi XE2 which provides a fast and cross platform JSON generator/parser (serializer/deserializer) under a license that doesn't suck.
  • SynCommons. High speed JSON library, using TDocVariant custom variant type for storage and access.
  • SynCrossPlatformJSON. High speed cross-platform JSON library, usingTJSONVariant custom variant type for storage and access.

System

Low-level helper stuff: memory, threading etc
  • FastMM. Lightning fast replacement memory manager for Embarcadero Delphi Win32 and Win64 applications that is not prone to memory fragmentation, and supports shared memory without the use of external .DLL files. // Used as stock memory manager since 2006 but in simplified version. Provides powerful memory leak/corruption detection instruments.
  • OmniThreadLibrary. Simple to use threading library for Delphi. // Easy integration of async processes in your app
  • ScaleMM. Fast scaling memory manager for Delphi
  • Delphi Detours Library. Library allowing you to hook Delphi functions and object methods and Windows API functions. It provides an easy way to insert and remove hook. // Supports x64, calling original functions, multi hooks, COM/Interfaces/win32api, object methods hooking, fully thread-safe, Delphi 7/2005-2010/XE-XE7 & Lazarus/FPC, 64 bit address is supported.
  • MemoryModule. With the MemoryModule engine you can store all required DLLs inside your binary to keep it standalone. Additional hook units allow transparent using of MM engine thus allowing switching MM/WinAPI loading as well as enabling 3rd party dynamic-load DLL interfaces that are unaware of MM (tested with Interbase Express components and Firebird client library). MemoryModule is a Pascal port of Joachim Bauch's C MemoryModule.

Other non-visual

  • TRegExpr. Easy to use and powerful tool for sophisticated search and substitutioning and for template-based text input check. // Abandoned since 2004 but unlike stock RAD Studio implementation doesn't use PCRE obj files that add dependency on msvcrt.dll
  • OnGuard (Alternate and maintained version for recent compiler version only). Library to create demo versions of your Borland Delphi & C++Builder applications. Create demo versions that are time-limited, feature-limited, limited to a certain number of uses, or limited to a certain # of concurrent network users. // Second link points to an adapted version for newest compiler versions.
  • StringSimilarity. Package designed for some fuzzy and phonetic string comparison algorithms. So far implemented are the following algorithms: DamerauLevenshtein, Koelner Phonetik, SoundEx, Metaphone, DoubleMetaphone, NGram, Dice, JaroWinkler, NeedlemanWunch, SmithWatermanGotoh, MongeElkan.

OS

Tools that help dealing with OS-specific internals
  • GLibWMI. Component Library for Delphi that encapsulate the classes for access to WMI of Windows in a set of VCL. BiosInfo, PrinterInfo, DiskInfo,... Allow access WMI Classes: WIN32_Bios, WIN32_Printers, WIN32_DiskDrive.
  • MemoryMap. Set of classes to get all the info about a memory of a running process.
  • The new Drag and Drop Component Suite . VCL component library that enables your Delphi and C++Builder applications to support COM based drag and drop and integrate with the Windows clipboard.

Unit Testing

  • DUnitX. New test framework, taking ideas from DUnit, NUnit and other test frameworks. It is designed to work with Delphi 2010 or later, it makes use of language/RTL features that are not available in older versions of Delphi.
  • DUnit. Unit Testing Framework, that has been the standard testing framework for years, the Delphi IDE now ships with this library. In addition to the drag and drop components, the Drag and Drop Component Suite also includes components that can be used to build Windows Shell Extensions.
  • DUnit2. Fork of the DUnit Project that adds several new features.
  • DelphiSpec. Library for running automated tests written in plain language. Because they're written in plain language, they can be read by anyone on your team. Because they can be read by anyone, you can use them to help improve communication, collaboration and trust on your team.
  • Delphi-Mocks. Simple mocking framework for Delphi XE2 or later. Allow you to mock both classes and interfaces for testing.
  • DUnit-XML. Test runner that allows DUnit Tests to output NUnit compatible XML.

Utilities

Useful dev tools/IDE plugins
  • Lazy Delphi Builder. Build tool for Delphi. Recompile projects/packages from sources with all dependencies, without need to mess around with configs. Quickly (re-)install components from sources into IDE, with no need to change your Library Path. //Powerful automating tool. Freeware but not open source
  • Delphi IDE theme editor / Delphi IDE Colorizer. Tool to change the IDE color highlighting of several Object Pascal IDE's like Delphi (RAD Studio), Appmethod, Lazarus and Smart Mobile Studio. DITE supports Delphi 5-7, 2005-2010, XE-XE6, Appmethod 1.13-1.14, Lazarus v1.0.1.3 and Smart Mobile Studio IDE v1.1.2.17. The Delphi IDE Colorizer (DIC) is a plugin which allows to customize the look and feel of the workspace of the RAD Studio IDE and Appmethod.
  • DDevExtensions. Extends the Delphi/C++Builder IDE by adding some new productivity features // Many useful IDE tweaks, must have.
  • VCL Fix Pack. Delphi unit that fixes VCL and RTL bugs at runtime by patching the original functions. If you want all IDE Fix Pack fixes in your application this unit is what you are looking for. Adding the unit to your project (Delphi and C++Builder) automatically installs the patches that are available for your Delphi/C++Builder version. // Actual for Delphi/C++ 6..2009
  • IDE Fix Pack. Collection of unofficial bug fixes and performance optimizations for the RAD Studio IDE, Win32/Win64 compiler and Win32 debugger. IDE Fix Pack is an IDE plugin for RAD Studio 2009-XE6 that fixes IDE bugs at runtime. All changes are done in memory. No files on disk are modified. None of your projects are modified or benefit from the IDE Fix Pack other than being compiled faster. Only the IDE gets the fixes and optimizations. // Supports all RAD Studio versions since 2007. Removes lots of annoying bugs that EMBT haven't fixed for years. Yay!
  • GExperts. Free set of tools built to increase the productivity of Delphi and C++Builder programmers by adding several features to the IDE. GExperts is developed as Open Source software and we encourage user contributions to the project. Grep search and replace supporting unicode files, DFMs, etc; Automatically rename components, insert text macros, open recent files; Easily backup your projects, with custom additional file lists; Keep nested lists of favorite files for quick access; Track dependencies between units in your project; Quickly jump to any procedure in the current unit; And much, much more...
  • CnWizards. Free Plug-in Tool Set for Delphi/C++ Builder/CodeGear RAD Studio to Improve Development Efficiency.
  • Delphi Package Installer (DelphiPI) (old repo). Tool which aids you installing components to your Delphi IDE. DelphiPI automatically resolves dependencies between packages, compiles, installs and adds source paths to your IDE.
  • ResEd. Expert for Delphi 2005, 2006, 2007, 2009, 2010 and XE. This expert is designed for editing the resource files (.res; .resx) that are linked to the active project. It will automatically search for all occurrences of {$R xyz.res} lines and will open/create resourcefiles for them. The expert registers itself in the menubar of Delphi under View.
  • Inno Setup. Free installer for Windows programs. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability.
  • SynProject (docs) tool for code source versioning and automated documentation of Delphi projects.

License

Max Gehringer