Mastering Delphi Programming: A Complete Reference Guide

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Delphi is a cross-platform Integrated Development Environment (IDE) that supports rapid application development for most operating systems, including Microsoft Windows, iOS, and now Linux with RAD Studio 10.2. If you know how to use the features of Delphi, you can easily create scalable applications in no time. This Learning Path begins by explaining how to find performance bottlenecks and apply the correct algorithm to fix them. You'll brush up on tricks, techniques, and best practices to solve common design and architectural challenges. Then, you'll see how to leverage external libraries to write better-performing programs. You'll also learn about the eight most important patterns that'll enable you to develop and improve the interface between items and harmonize shared memories within threads. As you progress, you'll also delve into improving the performance of your code and mastering cross-platform RTL improvements. By the end of this Learning Path, you'll be able to address common design problems and feel confident while building scalable projects. This Learning Path includes content from the following Packt products: Delphi High Performance by Primož Gabrijelčič Hands-On Design Patterns with Delphi by Primož Gabrijelčič

Author(s): Primož Gabrijelčič
Publisher: Packt
Year: 2019

Language: English
City: Birmingham, United Kingdom

About Packt
Contributors
Table of Contents
Preface
Chapter 1: About Performance
What is performance?
Different types of speed
Algorithm complexity
Big O and Delphi data structures
Data structures in practice
Mr. Smith's first program
Looking at code through the Big O eyes
Don't guess, measure!
Profiling with TStopwatch
Profilers
AsmProfiler
Sampling Profiler
AQTime
Nexus Quality Suite
Summary
Chapter 2: Fixing the Algorithm
Responsive user interfaces
Updating a progress bar
Bulk updates
Virtual display
Caching
Dynamic cache
Speeding up SlowCode
Summary
Chapter 3: Fine-Tuning the Code
Delphi compiler settings
Code inlining control
Optimization
Record field alignment
Assertions
Overflow checking
Range checking
Extracting common expressions
The helpful CPU window
Behind the scenes
A plethora of types
Simple types
Strings
Arrays
Records
Classes
Interfaces
Optimizing method calls
Parameter passing
Method inlining
The magic of pointers
Going the assembler way
Returning to SlowCode
Summary
Chapter 4: Memory Management
Optimizing strings and array allocations
Memory management functions
Dynamic record allocation
FastMM internals
Memory allocation in a parallel world
Replacing the default memory manager
ScaleMM
TBBMalloc
Fine-tuning SlowCode
Summary
Chapter 5: Getting Started with the Parallel World
Processes and threads
When to parallelize the code?
Most common problems
Never access UI from a background thread
Simultaneous reading and writing
Sharing a variable
Synchronization
Critical sections
Other locking mechanisms
A short note on coding style
Shared data with built-in locking
Interlocked operations
Object life cycle
Communication
Windows messages
Synchronize and Queue
Polling
Performance
Third-party libraries
Summary
Chapter 6: Working with Parallel Tools
TThread
Advanced TThread
Setting up a communication channel
Sending messages from a thread
Implementing a timer
Summary
Chapter 7: Exploring Parallel Practices
Tasks and patterns
Variable capturing
Tasks
Exceptions in tasks
Parallelizing a loop
Thread pooling
Async/Await
Join
Join/Await
Future
Parallel for
Pipelines
Creating the pipeline
Stages
Displaying the result and shutting down
Summary
Chapter 8: Using External Libraries
Using object files
Object file formats
Object file linking in practice
Using C++ libraries
Using a proxy DLL in Delphi
Summary
Chapter 9: Introduction to Patterns
Patterns in programming
Patterns are useful
Delphi idioms – Creating and destroying an object
Gang of Four started it all
Don't inherit – compose!
Pattern taxonomy
Creational patterns
Structural patterns
Behavioral patterns
Concurrency patterns
Criticism
Anti-patterns
Design principles
SOLID
Don't repeat yourself
KISS and YAGNI
Summary
Chapter 10: Singleton, Dependency Injection, Lazy Initialization, and Object Pool
Singleton
NewInstance
Lateral thinking
Dependency injection
From classes to interfaces
Using a factory method
Wrapping up
Lazy initialization
Using Spring
Object pool
Stock quote connection pool
Summary
Chapter 11: Factory Method, Abstract Factory, Prototype, and Builder
Factory method
Painter
Modernizing the factory method pattern
Abstract factory
Prototype
Cloning records
Cloning objects
Delphi idioms – Assign and AssignTo
Serialization
Builder
Idioms – Fluent interfaces
Summary
Chapter 12: Composite, Flyweight, Marker Interface, and Bridge
Composite
Child management
Flyweight
String interning
A practical example
Delphi idioms – comparers and hashers
Marker interface
Delphi idioms – attributes
Markers and attributes
Bridge
Bridged painting
Summary
Chapter 13: Adapter, Proxy, Decorator, and Facade
Selecting an appropriate structural pattern
Adapter
Wrapping a class
Wrapping an interface
Implementing a queue with a list
Proxy
Delphi idioms – replacing components in runtime
Smart pointers
Unit testing with mock objects
Decorator
Decorating streams
Delphi idioms – helpers
Facade
Summary
Chapter 14: Nullable Value, Template Method, Command, and State
Null object
Template method
Calculating the average value
Inversion of control
Command
Command-based editor
Creating commands
Commands
Invoker
Client
Macros
Cloning
State
Unquoting a string
Summary
Chapter 15: Iterator, Visitor, Observer, and Memento
Iterator
Delphi idioms – iterating with for..in
Implementing custom enumerators
Using an iterator interface
Visitor
Observer
Observing with Spring
Memento
Summary
Chapter 16: Locking Patterns
Delphi idioms – parallel programming
Lock
Custom locking mechanism
Lock striping
Single bit locks
Delphi idioms – bitwise operators
Double-checked locking
Optimistic locking
Readers-writer lock
Comparing reader-writer implementations
Summary
Chapter 17: Thread pool, Messaging, Future and Pipeline
Thread pool
Idiosyncrasies of Delphi's TThreadPool
Messaging
Windows messages
Queue and Synchronize
Polling
Future
Pipeline
Web spider
Filter stage
Downloader stage
Parser stage
Summary
Other Books You May Enjoy
Index