Use a unit name to locate the routines, types or classes it declares. This catalogue includes infrastructure units for which no public unit-level API contract is specified.
A unit's presence in this catalogue is not a recommendation to add it to a uses clause. Select the integration appropriate to your module (chapters 16-17 and 2). In particular, a lightweight DLL must not acquire full EurekaLog dependencies simply to access a convenient global accessor. Where no public unit-level contract is specified, do not infer responsibilities or supported usage from the unit name alone.
Global variables and constants appear under their declaring units here. Routine contracts are in appendix A, types in B, and classes/interfaces in D.
EActivationContext
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EAppCLX
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EAppCrossModule
Support unit for EAppDLL and EExceptionManager.
This unit implements callbacks between DLL and EurekaLog-enabled host.
Warning
Do not use this unit. Use EAppDLL (appendix C) unit in lightweight DLLs and EExceptionManager (appendix C) unit in everything else.
EAppDLL
Callbacks from DLL to EurekaLog-enabled host.
Tip
This is support unit for DLLs compiled with "lightweight DLL" profile.
This unit implements callbacks to EurekaLog-enabled host, so you can invoke EurekaLog from DLL compiled without EurekaLog.
Use EBase (appendix C) unit to invoke EurekaLog from lightweight DLL.
Warning
Including this unit into your application will block adding EurekaLog's code. For example, if you compile application with both EAppDLL and ExceptionLog7 units - it will be terminated on startup with error message.
Appendix A: Exception2HRESULT.
EAppFMX
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EAppHTTPApp
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EAppType
General support unit for application type concept (low-level).
Tip
This is low-level unit. Do not use this unit unless you need to extend or alter EurekaLog behavior.
Examples of application's type are: VCL, CLX, VCLX, console, service, CGI, IntraWeb and so on.
An application type is arbitrary non-empty string.
Application may have more than one type in some cases. For example, it can be both console and CGI.
Application type is generic qualifier that affects EurekaLog behaviour. For example, VCL application intercepts Application.ShowException and uses window error dialog.
This unit also provides a basic support for error messages, based on application type. For example, console application will write message to console and VCL application will show error message in dialog box.
Warning
If you modify this unit, consider the following guidelines:
-
Do not add additional unit into uses clause.
-
Do not add initialization/finalization section.
If you must break the above rules - make sure that there is no memory allocation during startup!
Appendix A: GetApplicationWnd, GetMainWnd, GetModuleType, GetParentWnd, GetTaskBarWnd, IsAppType, IsBPL, IsCGI, IsCGIConsole, IsCGIWin, IsCLX, IsConsole, IsCPL, IsDLL, IsEXE, IsFMX, IsGUI, IsIntraWeb, IsISAPI, IsModuleLibrary, IsService, IsVCL, IsWeb, SetAppType.
EAppVCL
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EAppWebBroker
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EBase
This is a basic unit for EurekaLog.
It contains a basic routines to control EurekaLog. Can be included in any application without referencing the entire EurekaLog source code. You can include this unit into your uses, if you want to get EurekaLog global state at run-time. Alternative approach is to use conditional defines.
EurekaLog defines the following conditional symbols:
-
EUREKALOG
-
EUREKALOG7
Appendix A: BeginThreadEx, EndThreadEx, ErrorCodeToStr, ExceptionMessage, GetExceptionErrorCode, HandleException, IsEurekaLogActive, IsEurekaLogActiveInThread, IsEurekaLogInstalled, IsExpected, IssueIDToStr, MarkExpected, NameThread, NameThreadForDebugging, RaiseExpected, RaiseOuterException, RaiseOuterExceptionExpected, SetEurekaLogState, SetEurekaLogStateInThread, SetExceptionMessage, ShowExpected.
Appendix D: Constructor TThreadEx.Create, EEurekaLogGeneralError, TThreadEx, TThreadEx.AutoHandleException, TThreadEx.Execute.
EBaseClasses
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix B: PELLocationInfo, TELLocationInfo, TELLocationInfo.Address, TELLocationInfo.BinaryFileName, TELLocationInfo.ClassName, TELLocationInfo.DebugDetail, TELLocationInfo.DebugInfo, TELLocationInfo.LineNumber, TELLocationInfo.Module, TELLocationInfo.ModuleName, TELLocationInfo.ModuleType, TELLocationInfo.Offset, TELLocationInfo.OffsetFromLineNumber, TELLocationInfo.OffsetFromProcName, TELLocationInfo.ProcedureName, TELLocationInfo.ProcOffsetLine, TELLocationInfo.SourceName, TELLocationInfo.UnitName.
Appendix D: TELDebugInfoSource.
ECallStack
Unit for call stack classes and tracing code.
Use classes and routines from this unit when you need to build call stack, get caller address, etc.
Appendix A: CurrentAddress, GetTracer, GetTracerClass, ReturnAddress.
Appendix B: TEurekaCallStack, TEurekaCallStackClass, TEurekaStackList.
Appendix D: Constructor TEurekaBaseStackList.Create, Constructor TGenericStackList.Create, TEurekaBaseStackList, TEurekaBaseStackList.Build, TEurekaBaseStackList.GetCurrentInstruction, TEurekaBaseStackList.GetCurrentStackFrame, TEurekaBaseStackList.GetCurrentStackPointer, TEurekaBaseStackList.GetCurrentTopOfStack, TEurekaStackListV6, TEurekaStackListV7, TGenericStackList, TGenericStackList.Tracer.
DefaultTracerMask
Mask for default call stack class.
DefaultTracerMask: Cardinal = TracerRawEurekaLogMask;
Value.
Stack tracing mask to be used by default.
Remarks.
This global variable holds mask for default call stack class. See EurekaCallStackClass (appendix C) for more information about default class. Default class is used when you want to create stack tracing class to get call stack without knowing current preferences.
Important. When you change this variable: be sure to change EurekaCallStackClass (appendix C) as well.
Note. Default is mask for TEurekaStackListV7 (appendix D) class.
EurekaCallStackClass
Default call stack class.
EurekaCallStackClass: TEurekaCallStackClass = TEurekaStackList;
Value.
Stack tracing class to be used by default.
Remarks.
This global variable holds default call stack class. Default class is used when you want to create stack tracing class to get call stack without knowing current preferences.
Use this variable to create call stack objects. Use GetTracer (appendix A)/ GetTracerClass (appendix A) to use specific classes.
You can replace it to use your own custom call stacks with all EurekaLog's routines (however, this is not recommended).
Important. When you change this variable: be sure to change DefaultTracerMask (appendix C) as well.
Note. Default is TEurekaStackListV7 (appendix D) class.
EClasses
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TEurekaModuleOptions.
EClassUtils
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ECompatibility
Language forward compatibility support unit.
This unit contains routines from latest Delphi/C++ Builder RTL.
This unit should be listed as a last unit in uses clause of implementation section.
EComponent
This unit contains EurekaLog 7 component.
EurekaLog component is used as simple way to react to events. This is analog of TApplicationEvents component. It is optional, it is not requited. See description of the component for more info.
Appendix D: TEurekaLogEvents, TEurekaLogEvents.OnAttachedFilesRequest, TEurekaLogEvents.OnBeginReportGen, TEurekaLogEvents.OnCustomBugID, TEurekaLogEvents.OnCustomButtonClick, TEurekaLogEvents.OnCustomDataRequest, TEurekaLogEvents.OnCustomFileName, TEurekaLogEvents.OnCustomWebFieldsRequest, TEurekaLogEvents.OnEndReportGen, TEurekaLogEvents.OnExceptionAction, TEurekaLogEvents.OnExceptionError, TEurekaLogEvents.OnExceptionNotify, TEurekaLogEvents.OnPasswordRequest, TEurekaLogEvents.OnRaise, TEurekaLogEvents.OnReproduceRequest, TEurekaLogEvents.OnZippedFilesRequest.
EConfig
Configuration management unit.
This unit contain basic support routines for saving and loading EurekaLog configuration information.
EurekaLog configuration can be stored either in the registry or in .ini-file. This unit encapsulates configuration management, abstracting callers from knowing underlying storage specifics.
EurekaLog code can use ConfigReadXXX and ConfigWriteXXX routines to read and write configuration without worrying about back-end storage. All ConfigReadXXX functions are just wrappers around ConfigReadString (appendix A) function. Similary, all ConfigWriteXXX procedures are just wrappers around ConfigWriteString (appendix A) procedure.
Be default, EurekaLog configuration is stored in the registry under GeneralEurekaLogRegistryKey ('\Software\EurekaLab\EurekaLog\7.0') registry key.
Callers may change this behaviour by calling SetupConfig (appendix A) procedure.
For example, EurekaLog Viewer changes default location to registry key GeneralEurekaLogViewerRegistryKey ('\Software\EurekaLab\Viewer\4.0'). And in standalone mode EurekaLog Viewer changes configuration location to external .ini file.
High-level ConfigXXX functions calls low-level function, depending on current storage's configuration. Low-level routines are RegKeyXXX, IniReadString (appendix A)/IniWriteString (appendix A), backward-compatibility routines ReadRawStrings/WriteRawStrings and also a helper functions like EncodeConfigValue (appendix A)/DecodeConfigValue (appendix A) and informational routines ConfigIsRegistry (appendix A), ConfigFileName (appendix A), ConfigKeyPath (appendix A).
Appendix A: ConfigDelete, ConfigFileName, ConfigIsRegistry, ConfigKeyPath, ConfigReadBool, ConfigReadFloat, ConfigReadInteger, ConfigReadString, ConfigWriteBool, ConfigWriteFloat, ConfigWriteInteger, ConfigWriteString, DecodeConfigValue, EncodeConfigValue, IniReadString, IniWriteString, RegKeyCheck, RegKeyRead, RegKeyWrite, SetupConfig.
EConsts
Global constants.
This unit holds global non-localizable constants for EurekaLog.
Warning
DO NOT LOCALIZE STRINGS IN THIS UNIT!
EEurekaLogCurrentVersion
Current EurekaLog version (numeric).
EEurekaLogCurrentVersion: DWord = 8000;
Value.
Numeric value of EurekaLog's version.
Must be Word value for streaming purposes.
Example values: 6025, 6104, 7000, 7001, etc.
Remarks.
This constant represents EurekaLog's version number in the following format: XYZZ = 'X.Y.ZZ'. For example, 6104 means '6.1.04'.
This value is used for streaming EurekaLog data formats. You can use EEurekaLogVersion (appendix C) constant for human-readable version information.
Note. This value may be less than actual EurekaLog version.
EEurekaLogLicense
EurekaLog's license type.
EEurekaLogLicense = 'Enterprise';
Value.
String description of current EurekaLog license.
Example values: 'Trial', 'Professional', 'Enterprise'.
For non-stable releases a '(beta)' suffix is added. Example: 'Professional (beta)'.
Remarks.
Each EurekaLog is compiled against specific source code - trial, professional, enterprise, etc. This constant contains value of license for which current source code was compiled.
Note. You can not change this value until you have a full source code of EurekaLog (to recompile EurekaLog). Currently source code is available only for Enterprise edition of EurekaLog.
When you have source code, you can change this constant to arbitrary value.
EEurekaLogVersion
Current EurekaLog version (textual).
EEurekaLogVersion = '7.16.1.1 update 1 hot-fix 1';
Value.
String representation of current EurekaLog's version.
Example value: '7.0.0.177'.
For beta versions, RC versions and other non-stable releases a suffix is added. Example: '7.0.0.177 RC 2'
Remarks.
This constant represents EurekaLog's version number in the standard 4-number format 'A.B.C.D' plus optional suffix for non-stable releases.
ECore
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDbgHelp
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDebugDWARF
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Capability limit: its debug-information provider class is declared but explicitly documented as not implemented (appendix D). The unit name does not promise a working provider.
Appendix D: TELDebugInfoDWARF.
EDebugEL
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELDebugInfoNative.
EDebugEL7
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELDebugInfoNativeOld.
EDebugExportBase
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELDebugInfoExportsBase.
EDebugExports
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELDebugInfoExports.
EDebugInfo
Debug information unit.
This unit contains various routines to work with debug information.
This unit does not implement any support for debug information by itself. You had to also include specific units with support for debug information. For example, EDebugMAP for .map files, EDebugJCL for JEDI (JCL/JDBG), etc. Once support unit is included - you can use this unit (EDebugInfo) to work with debug information. You can include more than one support unit.
Appendix A: __FILE__, __FUNCTION__, __LINE__, __LOCATION__, __MODULE__, __UNIT__, GetLocationInfo, GetLocationInfoStr, LocationToStr.
Appendix B: TELUseParent, TELUseParent.eupChild, TELUseParent.eupNone, TELUseParent.eupParent.
EDebugJCL
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDebugMAB
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDebugMAB2
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDebugMap
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDebugME
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELDebugInfoMadExcept.
EDebugMS
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELDebugInfoSymbols.
EDebugStabs
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Capability limit: its debug-information provider class is declared but explicitly documented as not implemented (appendix D). The unit name does not promise a working provider.
Appendix D: TELDebugInfoStabs.
EDebugTD32
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDialog
Base unit for dialogs.
This unit contains basic abstract class for implementing error dialogs in EurekaLog. It also registers build-in classes like NULL dialog and MessageBox dialog.
Non-trivial error dialogs are implemented in other units (appendix D lists their classes), which refers to this unit (EDialog) and implement one or more child sub-classes.
Appendix A: FindDialogClass, RegisterDialogClass, RegisterDialogClassFirst.
Appendix D: EDialog.TMessageBoxDetailedDialog (MessageBox detailed dialog), EDialog.TMessageBoxDialog (MessageBox dialog), EDialog.TNullDialog (Null dialog), EDialog.TRTLHandlerDialog (RTL dialog), TBaseDialog.
EDialogCGI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogCGI.TWebDialog (CGI).
EDialogConsole
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogConsole.TConsoleWriterDialog (Console).
EDialogHTMLBased
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDialogSend
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDialogSendWinAPI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDialogService
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogService.TEventLogDialog (System Log).
EDialogWeb
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDialogWER
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogWER.TWERDialog (WER).
EDialogWinAPI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDialogWinAPIEurekaLog
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogWinAPIEurekaLog.TEurekaLogDialog (EurekaLog).
EDialogWinAPIEurekaLogDetailed
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogWinAPIEurekaLogDetailed.TEurekaLogDetailedDialog (EurekaLog detailed).
EDialogWinAPIMSClassic
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: EDialogWinAPIMSClassic.TMSClassicDialog (MS Classic).
EDialogWinAPIStepsToReproduce
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EDisAsm
Disassembler unit.
This unit holds disassembler for current CPU. This unit is used by EurekaLog to disassemble machine code for bug report. Use routines from this unit to disassemble code in the current process.
Note
This unit does not hold any specific implementation. It is just a stub to other units. Implementations for specific CPUs can be found in EDisAsmX8632, EDisAsmX8664, etc.
Appendix A: DecodeInstruction, DisasmInstruction, GetAsmSize, GetFunctionSize, InstructionToString.
Appendix B: PInstruction, TInstruction, TInstruction.Accessible, TInstruction.Next, TInstruction.PlatformSpecific, TInstruction.Start, TInstruction.Valid.
EDLLs
Support unit for dynamic DLL loading.
This unit loads DLL dynamically on request. Just use appropriate LibXYZ function to obtain handle to the DLL. DLL will be loaded and unloaded automatically.
EDNS
DNS support unit.
This unit contains headers (low-level) and hi-level routines to work with DNS requests.
Appendix A: GetMXServerFromEmail.
EDWARF
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EEncoding
Encoding support unit.
This unit contains routines data encoding.
Note
Encoding is often confused with encryption and hashing, but they are not the same. All three transform data into another format. Both encoding and encryption are reversible, and hashing is not.
The purpose of encoding is to transform data so that it can be properly (and safely) consumed by a different type of system, e.g. binary data being displayed to human, or being sent over email. The goal is not to keep information secret, but rather to ensure that it’s able to be properly consumed.
The purpose of encryption is to transform data in order to keep it secret from others, e.g. sending someone a secret letter that only they should be able to read, or securely sending a password over the Internet. Encryption transforms data into another format in such a way that only specific individual(s) can reverse the transformation. It uses a key, which is kept secret, in conjunction with the plaintext and the algorithm, in order to perform the encryption operation.
Unlike encoding and encryption - hashing is not reversible process, it will tale arbitrary input and produce fixed-length result, so same input always produce the same output. Additionally, any modification of a given input should result in drastic change to the hash.
Use EEncoding unit for encoding, EEncrypt (appendix C) unit for encryption, EHash (appendix C) unit for hasing, ESignature (appendix C) unit for reading certificate info from executables.
EEncrypt
Encryption support unit.
This unit contains routines for symmetrical (TEA cipher, Twofish cipher) and asymmetrical (RSA cipher) encryption and decryption, as well as digital signing and verification (RSA cipher).
Note
Encryption is often confused with encoding and hashing, but they are not the same. All three transform data into another format. Both encoding and encryption are reversible, and hashing is not.
The purpose of encryption is to transform data in order to keep it secret from others, e.g. sending someone a secret letter that only they should be able to read, or securely sending a password over the Internet. Encryption transforms data into another format in such a way that only specific individual(s) can reverse the transformation. It uses a key, which is kept secret, in conjunction with the plaintext and the algorithm, in order to perform the encryption operation.
The purpose of encoding is to transform data so that it can be properly (and safely) consumed by a different type of system, e.g. binary data being displayed to human, or being sent over email. The goal is not to keep information secret, but rather to ensure that it’s able to be properly consumed.
Unlike encoding and encryption - hashing is not reversible process, it will tale arbitrary input and produce fixed-length result, so same input always produce the same output. Additionally, any modification of a given input should result in drastic change to the hash.
Use EEncrypt unit for encryption, EEncoding (appendix C) unit for encoding, EHash (appendix C) unit for hasing, ESignature (appendix C) unit for reading certificate info from executables.
Appendix A: DataProtect, DataUnprotect, EEncrypt.SecureFree, EncryptBufferFree, InitSalt, MemProtect, MemUnprotect, RSADecrypt, RSADestroyKey, RSAEncrypt, RSAGenKey, RSALoadPrivateKey, RSALoadPublicKey, RSASavePrivateKey, RSASavePublicKey, RSASign, RSAVerify, TEADecrypt, TEADefaultKey, TEADeriveKey, TEADeriveKeyHMAC, TEADestroyKey, TEAEncrypt, TEAInitSessionKey, TwofishDecrypt, TwofishDeriveKey, TwofishDeriveKeyHMAC, TwofishDestroyKey, TwofishEncrypt, TwofishInitIV, TwofishInitKey.
Appendix B: PSalt, PTwofishInitVector, TEncryptBuffer, TRSAExport, TRSAExport.rsBLOB, TRSAExport.rsDER, TRSAExport.rsPEM, TRSAImport, TRSAKey, TRSAKey.PrivateKey, TRSAKey.PublicKey, TRSASignature, TSalt, TTEAKey, TTwofishInitVector, TTwofishKey, TTwofishRAWKey.
EEvents
EurekaLog events.
This unit serves event for EurekaLog. It contains event types, allows you to register (subscribe to) events, and raise events manually (if ever needed).
Each event is done as either method or procedure. You can use either option, there is no difference between method and procedure, so you can use whatever you want.
All events follows the same template. To use EurekaLog event you must declare a procedure or method with required signature (see explanation of specific events for exact code syntax). There is RegisterEventEventName procedure, which you can use to register event handler for any event. And there is reverse UnregisterEventEventName routine, which cancels event for your handler.
Note
Additionaly, there is also DoEventEventName procedure, which can be used to invoke event, but it's typically used by EurekaLog itself.
Workflow examples are in the corresponding practical chapter. for sample code to register event handler.
Instead of using events from code - you can subscribe to event by using EurekaLog component (appendix D, TEurekaLogEvents). You can just drop component to form and double click on any event to create event handler - much like you do with creating event handlers for, say, FormCreate event for form, etc.
Tip
It's recommended to use registration from code instead of using the component.
For detailed descriptions and callback declarations, see EEvents in appendix B.
Caution!
Any event is called from the context of exception thread, which may be not the main thread of application. Thus, it's highly recommended to avoid using any global-like data and to avoid access VCL objects. If you still need to do any of that - please use proper thread synchronization for globals and Synchronize method for VCL access.
Appendix A: AddCustomDataToBugReport, AddCustomWebField, RegisterEventAttachedFilesRequest, RegisterEventBeginReportGen, RegisterEventCustomBugID, RegisterEventCustomButtonClick, RegisterEventCustomDataRequest, RegisterEventCustomFileName, RegisterEventCustomWebFieldsRequest, RegisterEventEndReportGen, RegisterEventExceptionAction, RegisterEventExceptionError, RegisterEventExceptionNotify, RegisterEventHelpButtonClick, RegisterEventPasswordRequest, RegisterEventRaise, RegisterEventReproduceRequest, RegisterEventZippedFilesRequest, UnRegisterEventAttachedFilesRequest, UnRegisterEventBeginReportGen, UnRegisterEventCustomBugID, UnRegisterEventCustomButtonClick, UnRegisterEventCustomDataRequest, UnRegisterEventCustomFileName, UnRegisterEventCustomWebFieldsRequest, UnRegisterEventEndReportGen, UnRegisterEventExceptionAction, UnRegisterEventExceptionError, UnRegisterEventExceptionNotify, UnRegisterEventHelpButtonClick, UnRegisterEventPasswordRequest, UnRegisterEventRaise, UnRegisterEventReproduceRequest, UnRegisterEventZippedFilesRequest.
Appendix B: EEvents.TELEvReportGenMeth, EEvents.TELEvReportGenProc, TELEvAttachedFilesRequestMeth, TELEvAttachedFilesRequestProc, TELEvCustomBugIDMeth, TELEvCustomBugIDProc, TELEvCustomButtonClickMeth, TELEvCustomButtonClickProc, TELEvCustomDataRequestMeth, TELEvCustomDataRequestProc, TELEvCustomFileNameMeth, TELEvCustomFileNameProc, TELEvCustomWebFieldsRequestMeth, TELEvCustomWebFieldsRequestProc, TELEvExceptionActionMeth, TELEvExceptionActionProc, TELEvExceptionErrorMeth, TELEvExceptionErrorProc, TELEvExceptionNotifyMeth, TELEvExceptionNotifyProc, TELEvHelpButtonClickMeth, TELEvHelpButtonClickProc, TELEvPasswordRequestMeth, TELEvPasswordRequestProc, TELEvRaiseMeth, TELEvRaiseProc, TELEvReproduceRequestMeth, TELEvReproduceRequestProc, TELEvZippedFilesRequestMeth, TELEvZippedFilesRequestProc.
EException
Unit with exception information class.
Appendix D: TEurekaExceptionInfo, TEurekaExceptionInfo.ActiveControl, TEurekaExceptionInfo.ActiveControlClass, TEurekaExceptionInfo.ActiveControlText, TEurekaExceptionInfo.ActiveForm, TEurekaExceptionInfo.ActiveFormClass, TEurekaExceptionInfo.ActiveFormText, TEurekaExceptionInfo.AdditionalInfo, TEurekaExceptionInfo.Address, TEurekaExceptionInfo.BaseException, TEurekaExceptionInfo.BugID, TEurekaExceptionInfo.BugIDSource, TEurekaExceptionInfo.BugIDStr, TEurekaExceptionInfo.CallStack, TEurekaExceptionInfo.Context, TEurekaExceptionInfo.Cursor, TEurekaExceptionInfo.CursorPos, TEurekaExceptionInfo.CustomID, TEurekaExceptionInfo.ExceptionClass, TEurekaExceptionInfo.ExceptionCode, TEurekaExceptionInfo.ExceptionExternal, TEurekaExceptionInfo.ExceptionLocation, TEurekaExceptionInfo.ExceptionMessage, TEurekaExceptionInfo.ExceptionNative, TEurekaExceptionInfo.ExceptionNumber, TEurekaExceptionInfo.ExceptionObject, TEurekaExceptionInfo.ExceptionRecord, TEurekaExceptionInfo.ExceptionThreadID, TEurekaExceptionInfo.Expected, TEurekaExceptionInfo.ExpectedContext, TEurekaExceptionInfo.ExpectedURL, TEurekaExceptionInfo.Handled, TEurekaExceptionInfo.Handler, TEurekaExceptionInfo.Info, TEurekaExceptionInfo.InitializationException, TEurekaExceptionInfo.InnerException, TEurekaExceptionInfo.LastSystemErrorCode, TEurekaExceptionInfo.Module, TEurekaExceptionInfo.ModuleName, TEurekaExceptionInfo.ModuleVersion, TEurekaExceptionInfo.Options, TEurekaExceptionInfo.Processed, TEurekaExceptionInfo.Reader, TEurekaExceptionInfo.ReproduceText, TEurekaExceptionInfo.SafeCallExpt, TEurekaExceptionInfo.Secondary, TEurekaExceptionInfo.StackDump, TEurekaExceptionInfo.StackPoint, TEurekaExceptionInfo.StackTop, TEurekaExceptionInfo.SynchronizeException, TEurekaExceptionInfo.ThreadException, TEurekaExceptionInfo.ThreadID, TEurekaExceptionInfo.Time, TEurekaExceptionInfo.ToString, TEurekaExceptionInfo.UnhandledExceptionNumber.
EExceptionHook
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfo
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoBCB
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoCLR
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoCpp
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoDelphi2
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoDelphiANSI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoDelphiUnicode
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoGeneric
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoLLVM
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionInfoMSVC
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EExceptionManager
Appendix B: TExceptionNotifyMode, TExceptionNotifyMode.emD2009, TExceptionNotifyMode.emFull, TExceptionNotifyMode.emHook, TExceptionNotifyMode.emNull, TExceptionNotifyMode.emUnknown.
Appendix D: TExceptionManager, TExceptionManager.ClearThreadExceptions, TExceptionManager.ExceptionCount, TExceptionManager.Handle, TExceptionManager.Info, TExceptionManager.Instance, TExceptionManager.LastThreadException, TExceptionManager.Mode, TExceptionManager.Notify, TExceptionManager.ShowLastExceptionData, TExceptionManager.StandardEurekaError, TExceptionManager.StandardEurekaNotify, TExceptionManager.UnhandledExceptionCount.
EFileMemory
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EFixSafeCallException
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EFonts
Adaptive fonts support unit.
This unit provides information about system fonts. You can use this unit to use user's customized fonts.
Note
Delphi applications use fixed build-in font names by default. Such applications are not affected by system font settings.
Appendix A: GUIFont, MonoFont.
EFreeze
Freeze detection unit.
This unit holds code for running freeze detection checks.
Freeze detection is initialized automatically on startup by invoking InitCheckFreeze (appendix A) function. This function uses FreezeThreadClass (appendix C) variable to select specific hang detection code.
Appendix A: DoneCheckFreeze, FreezeNotifyStillAlive, InitCheckFreeze, IsFreezeCheckEnabled, IsFreezeCheckInstalled, PauseFreezeCheck, RaiseFreezeException, ResumeFreezeCheck.
Appendix B: TFreezeThreadClass.
Appendix D: TFreezeThread, TFreezeThread.ChecksPaused, TFreezeThread.Execute, TFreezeThread.FreezeTimeout, TFreezeThread.TargetThreadHandle, TFreezeThread.TargetThreadID, TFreezeThread.TargetWindow, TMainThreadFreezeDetectionThread, TWCTFreezeDetectionThread.
FreezeThreadClass
Determinate class to be used as background freeze detection thread.
FreezeThreadClass: TFreezeThreadClass;
Value.
Class to create by InitCheckFreeze (appendix A) function.
Remarks.
This variable is used by InitCheckFreeze (appendix A) function to create a new background freeze detection thread. You can use build-in classes ( TMainThreadFreezeDetectionThread (appendix D) or TWCTFreezeDetectionThread (appendix D)) or implement your own freeze detection thread class. Class has to be descendant of TFreezeThread (appendix D) and it must override Execute (appendix D, TFreezeThread.Execute) method.
Note. You need to re-initialize freeze detection after changing this variable if freeze checks are running. Use DoneCheckFreeze (appendix A) and InitCheckFreeze (appendix A) to stop/start background freeze detection thread.
You do not need to re-initialize freeze detection if you change this variable before initialization of EurekaLog.
The best course of action would be disabling freeze detection in EurekaLog options, then assigning your own freeze detection class and enabling freeze detection via a call to InitCheckFreeze function.
EHash
Hashing support unit.
This unit contains functions to calculate CRC32, CRC16, MD5, SHA-1, and SDBM hashes.
Note
Hashing is often confused with encryption and encoding, but they are not the same. All three transform data into another format. Both encoding and encryption are reversible, and hashing is not.
Unlike encoding and encryption - hashing is not reversible process, it will tale arbitrary input and produce fixed-length result, so same input always produce the same output. Additionally, any modification of a given input should result in drastic change to the hash.
The purpose of encoding is to transform data so that it can be properly (and safely) consumed by a different type of system, e.g. binary data being displayed to human, or being sent over email. The goal is not to keep information secret, but rather to ensure that it’s able to be properly consumed.
The purpose of encryption is to transform data in order to keep it secret from others, e.g. sending someone a secret letter that only they should be able to read, or securely sending a password over the Internet. Encryption transforms data into another format in such a way that only specific individual(s) can reverse the transformation. It uses a key, which is kept secret, in conjunction with the plaintext and the algorithm, in order to perform the encryption operation.
Use EHash unit for hasing, EEncrypt (appendix C) unit for encryption, EEncoding (appendix C) unit for encoding, ESignature (appendix C) unit for reading certificate info from executables.
Appendix A: CRC16Hash, CRC32Hash, EHash.SecureFree, MD5Hash, MD5HMAC, SDBMHash, SHA1Hash, SHA1HMAC, SHA256Hash, SHA256HMAC.
Appendix B: TCRC16Hash, TCRC32Hash, TMD5Hash, TSDBMHash, TSHA1Hash, TSHA256Hash.
EHook
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EHTMLHelp
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EInfoFormat
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EInject
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EInterfaces
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EJSON
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EListView
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ELogBuilder
Bug report builder unit.
This unit holds declaration for abstract log builder class (TBaseLogBuilder (appendix D)) and 3 build-in specific implementation of log builder class (TLogBuilder (appendix D), TXMLLogBuilder (appendix D), TJSONLogBuilder (appendix D), and TDummyLogBuilder (appendix D)).
Log builder class is used by EurekaLog to create bug reports from exception information. Default class to use is defined by LogBuilderClass (appendix C) global variable.
Note
Bug report is a simple multi-line text. Multi-files bug reports (ELP/ZIP) are created by dialog class (appendix D, TBaseDialog).
Appendix A: BuildBugReport, DisasmFunction, FindLowAddress.
Appendix B: ELogBuilder.TELEvReportGenMeth, ELogBuilder.TELEvReportGenProc.
Appendix D: Constructor TBaseLogBuilder.Create, TBaseLogBuilder, TBaseLogBuilder.BuildReport, TBaseLogBuilder.CallStack, TBaseLogBuilder.CustomFields, TBaseLogBuilder.ExceptionInfo, TBaseLogBuilder.FBuilded, TBaseLogBuilder.Options, TBaseLogBuilder.Refresh, TBaseLogBuilder.Report, TBaseLogBuilder.ToString, TDummyLogBuilder, TJSONLogBuilder, TLogBuilder, TXMLLogBuilder.
LogBuilderClass
Specifies global log builder class to use.
LogBuilderClass: TBaseLogBuilderClass = TLogBuilder;
Value.
A specific log builder class. TLogBuilder (appendix D) is the default value.
Remarks.
This global variable specifies class which will be used to build reports by EurekaLog. Default is the TLogBuilder class. You can set this variable to your own class to alter content of all text bug reports.
ELogging
Logging support unit.
This unit contains various routines for logging.
First, you have to create new log file by calling / ELogOpen (appendix A) function.
Next, you add log entries by calling various / ELog (appendix A)-like functions.
Final log will be automatically attached to packed bug report (.elp).
Appendix A: ELog, ELogAddCheckPoint, ELogAddResetSeparator, ELogAddSeparator, ELogAssigned, ELogAssignedPtr, ELogClear, ELogCurrency, ELogDateTime, ELogEnter, ELogError, ELogException, ELogFlush, ELogIf, ELogIfDateTime, ELogInterval, ELogMemoryAsHex, ELogNote, ELogOpen, ELogPointer, ELogReminder, ELogResetCheckPoint, ELogWarning, ELogWindowHandle, ELogWinError, GetPerformanceCount.
Appendix B: TLogMsgContent, TLogMsgType, TLogType, TLogType.elmcBitmap, TLogType.elmcCollection, TLogType.elmcColor, TLogType.elmcComponentAsText, TLogType.elmcCustomHierarchy, TLogType.elmcCustomProperties, TLogType.elmcCustomTable, TLogType.elmcCustomText, TLogType.elmcMemory, TLogType.elmcMemoryStatus, TLogType.elmcObject, TLogType.elmcRegistry, TLogType.elmcStackTrace, TLogType.elmcStringList, TLogType.elmcSystemInfo, TLogType.elmcText, TLogType.elmcTextFile, TLogType.elmcVersionInfo, TLogType.elmcWindow, TLogType.elmcXmlData, TLogType.elmtAppStartSeparator, TLogType.elmtBlue, TLogType.elmtCheckPoint, TLogType.elmtClear, TLogType.elmtCollapsedMethod, TLogType.elmtEnterMethod, TLogType.elmtError, TLogType.elmtException, TLogType.elmtExitMethod, TLogType.elmtExitMethodCollapse, TLogType.elmtGreen, TLogType.elmtInactiveSeparator, TLogType.elmtIndigo, TLogType.elmtInfo, TLogType.elmtLevel1, TLogType.elmtLevel2, TLogType.elmtLevel3, TLogType.elmtLevel4, TLogType.elmtLevel5, TLogType.elmtLevel6, TLogType.elmtLevel7, TLogType.elmtNote, TLogType.elmtOrange, TLogType.elmtRed, TLogType.elmtReminder, TLogType.elmtResetSeparator, TLogType.elmtSaveLogFile, TLogType.elmtScratchPad, TLogType.elmtSeparator, TLogType.elmtTiming, TLogType.elmtViolet, TLogType.elmtWarning, TLogType.elmtYellow.
Appendix D: IEurekaLogger, IEurekaLogger.AddCheckPoint, IEurekaLogger.AddResetSeparator, IEurekaLogger.AddSeparator, IEurekaLogger.Category, IEurekaLogger.Color, IEurekaLogger.Details, IEurekaLogger.Enter, IEurekaLogger.FontColor, IEurekaLogger.Kind, IEurekaLogger.Log, IEurekaLogger.LogAssigned, IEurekaLogger.LogAssignedPtr, IEurekaLogger.LogCurrency, IEurekaLogger.LogDateTime, IEurekaLogger.LogError, IEurekaLogger.LogException, IEurekaLogger.LogIf, IEurekaLogger.LogIfDateTime, IEurekaLogger.LogInterval, IEurekaLogger.LogMemoryAsHex, IEurekaLogger.LogNote, IEurekaLogger.LogPointer, IEurekaLogger.LogReminder, IEurekaLogger.LogWarning, IEurekaLogger.LogWindowHandle, IEurekaLogger.LogWinError, IEurekaLogger.ResetCheckPoint, IEurekaLoggerParams, IEurekaLoggerParams.C, IEurekaLoggerParams.D, IEurekaLoggerParams.P, IEurekaLoggerParams.Ret.
ELogManager
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ELongStrings
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ELowLevel
Low level routines.
This units consists of low-level routines.
This unit holds very simple general purpose routines. It's main purpose to be basic service unit. It can not have complex code nor complex unit dependency, so it can be used everywhere - including leaks-detection units.
Since it's a very low-level unit - you rarely need to call its routines.
However, this unit also holds few compatibility declarations - i.e. the procedures and functions that are missing in old languages. They are declared here, so code may use new routines even in (for example) Delphi 4.
Warning
If you modify this unit, consider the following guidelines:
-
Do not add additional unit into uses clause.
-
Do not add initialization/finalization section.
If you must break the above rules - make sure that there is no memory allocation during startup!
Appendix A: __initialize_security_cookie, __security_check_cookie, _resetstkoflw, AllocatePageAlign, AllocationGranularity, CanCallMemWipeStack, CheckELMagicCode, ConvertAddress, ConvertRetAddr, CurrentInstance, DebugBreak, EnsureThreadStack, GetReadableSize, IfElse, IntoIDE, IsCBuilder, IsCompiledWithPackages, IsDebugged, IsDynamicRTL, IsLLVM, IsReadableFile, IsRTLCompiledWithStackFrames, IsStackFramesProc, IsValidBlockAddr, IsValidClass, IsValidCodeAddr, IsValidHandle, IsValidObject, IsVirtualized, IsWritableFile, IsWritableFolder, MainThreadTopOfStack, MemWipeStack, PageSize, PrimaryInstance, ReserveLowerMemory, SafeExec.
_ThreadStackGuarantee
Indicates the minimum size of the stack associated with the calling thread or fiber that will be available during any stack overflow exceptions. This is useful for handling stack overflow exceptions; the application can safely use the specified number of bytes during exception handling.
_ThreadStackGuarantee: Cardinal;
Value.
The size of the stack, in bytes. This value cannot be larger than the reserved stack size.
Remarks.
This value is used by the function (appendix A, EnsureThreadStack). It is set to your EurekaLog project options on startup.
ELowLevelClasses
Low-level classes support unit.
This unit contains reduced implementation of some classes from Classes unit. This unit does not have reference to SysUtils unit - so it can be used in other low-level units (such as memory leaks checking).
ELowLevelExceptions
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EMantisConnectStub
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EMAPI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EMapParserBase
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELAbstractMapParser, TELAbstractMapParser.DecodeIdent, TELAbstractMapParser.MapStringToFileName, TELAbstractMapParser.MapStringToModuleName, TELAbstractMapParser.MapStringToStr, TELAbstractMapParser.PrepareStr.
EMapWin32
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EMemLeaks
Unit for diagnosing memory problems (leaks, overflows, etc.).
This unit contains code for EurekaLog's memory manager filter. This filter allows EurekaLog to check for memory problems, such as leaks, overflows, double-free, cross-module free, etc.
This unit does not contains implementation of real memory manager. This is memory filter only. It uses already installed memory manager to allocate and dispose memory.
EurekaLog's memory filter will add a little overhead for each memory allocation. EurekaLog stores additional header with call stack and other service information with each memory block. This header allows EurekaLog to check for memory problems.
Disabling memory leaks checks will significantly decrease size of added overhead (by removing call stack, name, etc.), but not remove overhead completely.
Additionally, a memory filter from EMemLeaks unit provide a way to associate exception object with exception information (appendix D, TEurekaExceptionInfo) without using hooks. This allows EurekaLog to implement a clean way to exception tracing - which is useful for protection software. That is why it is very important to try to keep "Enable extended memory manager" option checked - even if you disable all other memory options.
Most routines from EMemLeaks unit should not be called from your code. Exceptions to this rule are:
-
IsMemLeaksInstalled (appendix A)/IsMemLeaksEnabled (appendix A) functions;
-
EnableMemLeaksRegistering (appendix A)/DisableMemLeaksRegistering (appendix A) functions;
-
EurekaRegisterExpectedMemoryLeak (appendix A)/EurekaUnregisterExpectedMemoryLeak (appendix A) functions;
-
AllocMemSizeEx (appendix A)/AllocMemCountEx (appendix A) functions;
-
AllocMemSizeMax (appendix A)/AllocMemCountMax (appendix A) functions;
-
MemLeaksName function (appendix A, MemLeaksName);
-
MemLeaksOwn function (appendix A, MemLeaksOwn);
-
MemLeaksSetParentBlock function (appendix A, MemLeaksSetParentBlock);
-
CheckHeap function (appendix A, CheckHeap);
-
DumpAllocationsToFile function (appendix A, DumpAllocationsToFile);
-
EurekaTryGetMem function (appendix A, EurekaTryGetMem);
Note
EMemLeaks unit is always included in uses clause when EurekaLog is enabled. Even if memory leaks and problems checks are disabled.
That is because memory checks can be enabled at run-time (programmatically or via command-line switches).
Note
EMemLeaks unit is included in uses clause when "Enable extended memory manager" option is checked.
Tip
"Enable extended memory manager" option can be enabled without enabling EurekaLog (via "Activate EurekaLog" option). This allows you to have EurekaLog memory manager for DLLs compiled without EurekaLog (for example, when you use "DLL" profile).
Warning
EMemLeaks unit must be a first unit to be initialized in your application.
There must be no active memory allocations before its initialization.
For this reason this unit must be a first unit in uses clause of your project.
Important!
It is highly important to have compatible memory managers in all modules which use shared memory manager. Therefore, if you are going to use shared memory manager - it is best to enable EMemLeaks unit in all your DLLs and EXE.
Pay close attention to statically linked DLLs, as such DLLs are loaded and initialized before main EXE. This can lead to initialization of some units before EMemLeaks unit.
Important!
You can place the following units before EMemLeaks unit in uses clause of your project:
-
units with memory manager's implementation (such as FastMM4, SafeMM, etc.);
-
units without initialization section;
-
units with initialization section which does not allocate memory;
-
units with initialization section which does allocate memory, but releases all allocated memory before return.
Normally EurekaLog would not allow any non-EurekaLog unit to be placed before EMemLeaks unit. However, EurekaLog has list of exceptions for this rule. For example, EurekaLog would allow you to place FastMM, FastMM3, FastMM4, SafeMMInstall, ShareMem, FastShareMem, SimpleShareMem, FastMove, FastCode, FastObj, FastSys, etc. units before EMemLeaks unit. You can instruct EurekaLog to allow other units to be placed before EMemLeaks unit. To do that:
-
Go to "Project" / "EurekaLog options" IDE menu;
-
Go to "Advanced" / "Custom / Manual" section;
-
Add "PreInitUnits" option (without quotes) to any location;
-
Add your units to the value of this option. Separate unit names with comma (","). Do not use spaces.
Appendix A: AllocMemCountEx, AllocMemCountMax, AllocMemSizeEx, AllocMemSizeEx2, AllocMemSizeMax, CheckHeap, DisableMemLeaksRegistering, DumpAllocationsToFile, EnableMemLeaksRegistering, EurekaAllocMem, EurekaFreeMem, EurekaGetMem, EurekaReallocMem, EurekaRegisterExpectedMemoryLeak, EurekaRegisterExpectedMemoryLeakDynArray, EurekaRegisterExpectedMemoryLeakStr, EurekaTryGetMem, EurekaUnregisterExpectedMemoryLeak, EurekaUnregisterExpectedMemoryLeakDynArray, EurekaUnregisterExpectedMemoryLeakStr, IsMemLeaksEnabled, IsMemLeaksInstalled, MemLeaksGetName, MemLeaksName, MemLeaksNameDynArray, MemLeaksNameStr, MemLeaksOwn, MemLeaksOwnDynArrayBoth, MemLeaksOwnDynArrayChild, MemLeaksOwnDynArrayParent, MemLeaksOwnStr, MemLeaksSetParentBlock, MemLeaksSetParentBlockDynArrayBoth, MemLeaksSetParentBlockDynArrayChild, MemLeaksSetParentBlockDynArrayParent, MemLeaksSetParentBlockStr.
Appendix B: TDumpCompareFunc, TDumpFilterFunc.
EMLang
MLang headers.
This unit contains translation of mlang.h.
EModules
Module information functions.
This unit contains module information extraction routines, which are used by bug report generation code to create error reports.
Most code from this unit can work in your application without EurekaLog enabled or installed.
Appendix A: __DATE__, __TIME__, CurrentEurekaLogOptions, GetApplicationDescription, GetApplicationName, GetCompilationDate, GetCurrentModuleCompilationDate, GetExceptionModuleName, GetExceptionModuleVersion.
EMonitors
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ENT
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EOSApiList
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EPChars
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EPEImage
PE(64) formats support unit.
This unit contains classes and routines to read and write Windows executable files (PE and PE64 formats).
EPNG
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EProcesses
Process information functions.
This unit contains process information extraction routines, which are used by bug report generation code to create error reports.
Most code from this unit can work in your application without EurekaLog enabled or installed.
EResLeaks
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix B: TCheckType, TCheckType.ctEqual, TCheckType.ctGetLastError, TCheckType.ctHResult, TCheckType.ctNone, TCheckType.ctNotEqual, TCheckType.ctNTStatus.
EResourceStrings
Fixups for resourcestring loading.
This unit fixes up loading resource strings by allocating bugger in the heap instead of stack, so now we can load a resource string without triggering a stack overflow. Basically it is a 100% copy of the SysUtils code, except it replaces buffer on stack with buffer on heap.
Appendix A: ResStringCleanupCache.
ERunTime
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EScreenShot
Screenshot support unit.
This unit contains helper routines for taking screenshots.
Appendix A: FindScreenshotRect, Screenshot, ScreenshotFree, ScreenshotInit, ScreenshotSave.
Appendix B: TScreeenshotHandle.
ESend
Base unit for send methods.
This unit contains basic abstract class for implementing send methods in EurekaLog.
Actual send methods are implemented in other units (appendix D lists their classes), which refers to this unit (ESend) and implement one or more child sub-classes.
Appendix A: EnumSenders, FindSender, RegisterSender, RegisterSenderFirst.
Appendix B: TELUniversalSenderClass.
Appendix D: TELUniversalSender.
ESendAPIBugZilla
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerBugZillaSender.
ESendAPIExceptionless
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerExceptionlessSender.
ESendAPIFogBugz
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerFogBugzSender.
ESendAPIGitHub
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerGitHubSender.
ESendAPIGitLab
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerGitLabSender.
ESendAPIJIRA
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerJIRASender.
ESendAPIJSON
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerJSONSender.
ESendAPIMantis
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerMantisSender.
ESendAPIRedmine
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerRedmineSender.
ESendAPIYouTrack
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELTrackerYouTrackSender.
ESendMail
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESendMailMAPI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELMailMAPISender.
ESendMailShell
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELMailShellSender.
ESendMailSMAPI
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELMailSimpleMAPISender.
ESendMailSMTP
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
Appendix D: TELMailSMTPBaseSender, TELMailSMTPClientSender, TELMailSMTPSender, TELMailSMTPServerSender.
ESendWeb
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESendWebFTP
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESendWebHTTP
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESignature
Unit for working with digital signatures of executable files.
This unit contains routines to exract information about digital signature of executable file.
If you are looking for code to sign/verify - see EEncrypt (appendix C) unit.
Appendix B: TCertificateInfo, TCertificateInfo.Encryption, TCertificateInfo.Hash, TCertificateInfo.Issuer, TCertificateInfo.IssuerID, TCertificateInfo.NotAfter, TCertificateInfo.NotBefore, TCertificateInfo.Serial, TCertificateInfo.Subject, TCertificateInfo.SubjectID, TCertificateInfo.Version, TSignatureInfo, TSignatureInfo.Certificates, TSignatureInfo.FileName, TSignatureInfo.MoreInfoLink, TSignatureInfo.ProgramName, TSignatureInfo.PublisherLink, TSignatureInfo.Signed, TSignatureInfo.Status, TSignatureInfo.Timestamp, TSignatureInfo.TimestampCertificates, TSignatureInfo.Timestamped, TSignatureInfo.Verified.
ESOAP
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESOAPMantis
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESocket
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESockets
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESpecificDelphi
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ESSLSocket
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EStackTracing
Low-level stack tracing code.
This unit contains actual code that performs stack tracing. RAW results of this code will be processed by classes from ECallStack (appendix C). Do not use code from this unit directly - always use ECallStack unit.
EStrConsts
String constants.
This unit holds global localizable string constants for EurekaLog. This unit can be localized by 3rd party tools.
There are resourcestrings, as well as run-time arrays of string and OnTranslate (GetText-style) function. Your localization solution may use any approach. For example, it may localize resourcestrings. Or it may install OnTranslate handler.
ESysInfo
System information functions.
This unit contains generic/system information extraction routines, which are used by bug report generation code to create error reports.
Most code from this unit can work in your application without EurekaLog enabled or installed.
Appendix A: ExpandEnvVars, GetActiveFormClass, GetActiveFormText, GetApplicationRect, GetCompanyName, GetComputerName, GetControlClass, GetControlText, GetCurrentUserPrivileges, GetDiskInfo, GetDisplayDPI, GetDisplayMode, GetEnvVariable, GetEurekaLogLabel, GetEurekaLogLicense, GetEurekaLogLicenseType, GetEurekaLogPath, GetEurekaLogStatus, GetEurekaLogVersion, GetFileIcon, GetFileSize, GetUserEMail, IsWin10, IsWin11, IsWin64, IsWin7, IsWin8, IsWin81, IsWinVista, IsWinXP, IsWorkstation, SetUserEmail.
ETaskDialogs
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EThreadsManager
EurekaLog thread manager unit.
This unit contains EurekaLog thread manager. EurekaLog uses thread manager to store per-thread information.
Appendix A: AcquireThreadData, ThreadData, ThreadDataEnum.
Appendix B: TThreadKind, TThreadKind.tkBeginThread, TThreadKind.tkBeginThreadEx, TThreadKind.tkGeneric, TThreadKind.tkTThread, TThreadKind.tkTThreadEx.
Appendix D: TEurekaThreadData, TEurekaThreadData.CallerAddress, TEurekaThreadData.CallerFunction, TEurekaThreadData.Handle, TEurekaThreadData.ID, TEurekaThreadData.IsMainThread, TEurekaThreadData.IsRTLThread, TEurekaThreadData.IsWindowsThread, TEurekaThreadData.Kind, TEurekaThreadData.Name, TEurekaThreadData.Parameter, TEurekaThreadData.ParentID, TEurekaThreadData.Priority, TEurekaThreadData.RealParameter, TEurekaThreadData.RealStartingAddress, TEurekaThreadData.RealStartingFunction, TEurekaThreadData.StackTop, TEurekaThreadData.StartingAddress, TEurekaThreadData.StartingFunction, TEurekaThreadData.Thread, TEurekaThreadData.ThreadClassName, TEurekaThreadDataList, TEurekaThreadDataList.Count, TEurekaThreadDataList.Items, TEurekaThreadDataList.ThreadData.
ETools
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
ETypes
Basic EurekaLog types.
This unit holds declarations of basic types and constants.
Tip
This unit is also interface counterpart to ECompatibility (appendix C) unit.
That's why this unit must be listed as last unit in uses clause of interface section.
Appendix B: PCustomName, PPointerRecord, PtrUInt, TAppType, TBlockType, TBlockType.btCppObject, TBlockType.btData, TBlockType.btDynArray, TBlockType.btObject, TBlockType.btString, TBugID, TCustomName, TEurekaActionType, TEurekaActionType.atCollectedExceptionInfo, TEurekaActionType.atCollectingExceptionInfo, TEurekaActionType.atEurekaLogInitialized, TEurekaActionType.atEurekaLogInitializing, TEurekaActionType.atEventHandler, TEurekaActionType.atExceptionHandled, TEurekaActionType.atExceptionHandling, TEurekaActionType.atGeneral, TEurekaActionType.atRestarting, TEurekaActionType.atSavedLogFile, TEurekaActionType.atSavingLogFile, TEurekaActionType.atSendCancelled, TEurekaActionType.atSending, TEurekaActionType.atSent, TEurekaActionType.atShowedExceptionInfo, TEurekaActionType.atShowingExceptionInfo, TEurekaActionType.atTerminating, TEurekaDebugDetail, TEurekaDebugDetail.ddModule, TEurekaDebugDetail.ddNone, TEurekaDebugDetail.ddProcedure, TEurekaDebugDetail.ddSourceCode, TEurekaDebugDetail.ddUnit, TEurekaDebugDetails, TEurekaLogFileType, TEurekaLogFileType.ftBugReport, TEurekaLogFileType.ftHTMLPage, TEurekaLogFileType.ftLog, TEurekaLogFileType.ftMiniDump, TEurekaLogFileType.ftSavedBugReport, TEurekaLogFileType.ftScreenshot, TEurekaLogFileType.ftXML, TEurekaLogFileType.ftZIP, TEurekaLogFileType.ftZIPCopy, TEurekaModuleType, TIssueIDType, TMemoryError, TMemoryError.leCorruption, TMemoryError.leHang, TMemoryError.leInvalidBlock, TMemoryError.leMultiFree, TMemoryError.leNone, TMemoryError.leObjectInUse, TMemoryError.leOutOfMemory, TMemoryError.leOverflow, TMemoryError.leUninstalled, TMemoryError.leUseAfterFree, TMemoryErrors, TModuleType, TModuleType.mtLibrary, TModuleType.mtPackage, TModuleType.mtProgram, TModuleType.mtUnknown, TPointerRecord, TPointerRecord.BlockState, TPointerRecord.BlockType, TPointerRecord.CallStack, TPointerRecord.SingleSize, TResponse, TResponse.ErrorCode, TResponse.ErrorMessage, TResponse.IssueID, TResponse.IssueIDStr, TResponse.IssueIDType, TResponse.SendResult, TResponse.SuccessMessage, TSendResult, TSendResult.srBugClosed, TSendResult.srBugReopen, TSendResult.srCancelled, TSendResult.srConnectionError, TSendResult.srInvalidInsert, TSendResult.srInvalidLogin, TSendResult.srInvalidModify, TSendResult.srInvalidRead, TSendResult.srInvalidSearch, TSendResult.srInvalidSelection, TSendResult.srNoExceptionInfo, TSendResult.srObsoleteVersion, TSendResult.srRestart, TSendResult.srSent, TSendResult.srUnknownError, TSendResult.srUnsupportedSender, TSendScreenshot, TSendScreenshot.ssActiveWindow, TSendScreenshot.ssApplication, TSendScreenshot.ssDesktop, TSendScreenshot.ssForegroundWindow, TSendScreenshot.ssNone, TSendScreenshot.ssPrimary, TSendScreenshot.ssWorkarea, TSysErrorCode.
EUnmangling
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EWCT
WCT headers.
This unit contains translation of Windows headers for WCT (Wait Chain Traversal). It includes wct.h.
Call WCTInit (appendix A) function before using this unit. (Optionally) Call WCTDone (appendix A) function after using this unit.
EWCTSupport
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EWebTools
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EWER
WER headers.
This unit contains translation of C++ Headers for WER (Windows Error Reporting). Corresponding .h files are errorrep.h and werapi.h.
Call InitWER (appendix A) function before using this unit.
EWinCrypt
Windows cryptography headers.
This unit contains translation of Windows headers for WinCrypt. It includes schannel.h, sspi.h, wincrypt.h.
All functions in this unit are automatically imported on request. There is no need to call any initialization routine.
EWinSock
WinSock headers.
This unit contains translation of Windows headers for WinSock. It includes winsock.h, winsock2.h, ws2tcpip.h.
All functions in this unit are automatically imported on request. There is no need to call any initialization routine.
ExceptionLog7
Main EurekaLog 7 unit.
This unit contains control logic of EurekaLog. It must be included into any application which use EurekaLog.
This unit also includes common routines of EurekaLog.
Note
Consider using EBase (appendix C) unit if you want to call EurekaLog routines in application without EurekaLog enabled (such as IsEurekaLogActive (appendix A)).
Including ExceptionLog7 unit into your application will include EurekaLog's code - which is not needed for applications without EurekaLog enabled.
Including EBase unit will include only minimum stub code without full overhead of entire EurekaLog's code.
Note
You can check whenever ExceptionLog7 unit is included into executable module by using PE Informer (aka Module Analyzer) Tool, which is included with EurekaLog 7 or EurekaLog Tools Pack.
EXML
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EXMLBuilder
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EXMLRPC
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EXMLRPCBugZilla
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.
EZip
Compression support unit.
This unit is hi-level wrapper for ZLib. It contains routines to compress/decompress RAW binary data in memory, as well as tools to pack/unpack files into ZIP archives.
Password and UTF-8 support is present.
Appendix A: TZipCompressionToString.
Appendix B: TStreamConstructor, TZipCompression, TZipCompression.zcBZIP2, TZipCompression.zcDeflate, TZipCompression.zcDeflate64, TZipCompression.zcImplode, TZipCompression.zcLZ77, TZipCompression.zcLZMA, TZipCompression.zcPKImplode, TZipCompression.zcPPMdI1, TZipCompression.zcReduce1, TZipCompression.zcReduce2, TZipCompression.zcReduce3, TZipCompression.zcReduce4, TZipCompression.zcReserved11, TZipCompression.zcReserved13, TZipCompression.zcReserved15, TZipCompression.zcReserved16, TZipCompression.zcReserved17, TZipCompression.zcShrunk, TZipCompression.zcStored, TZipCompression.zcTERSE, TZipCompression.zcTokenize, TZipCompression.zcWavePack, TZipEndOfCentralHeader, TZipHeader, TZipHeader.HostOS, TZipHeader.MadeByVersion, TZipHeader.RequiredVersion.
Appendix D: Constructor TZipFile.Create, Destructor TZipFile.Destroy, EZIPException, TZipFile, TZipFile.Add, TZipFile.Close, TZipFile.Comment, TZipFile.Extract, TZipFile.ExtractAll, TZipFile.ExtractZipFile, TZipFile.FileComment, TZipFile.FileCount, TZipFile.FileInfo, TZipFile.FileInfos, TZipFile.FileName, TZipFile.FileNames, TZipFile.IndexOf, TZipFile.IsValid, TZipFile.Mode, TZipFile.Open, TZipFile.Read, TZipFile.ZipDirectoryContents.
SIGNATURE_CENTRALHEADER
Signature of .zip file.
SIGNATURE_CENTRALHEADER: UInt32 = $02014B50;
Value.
'PK'#1#2 (4 bytes)
Remarks.
To be used as signature value in zip file header record.
SIGNATURE_DATADESCRIPTOR
Data descriptor signature.
SIGNATURE_DATADESCRIPTOR: UInt32 = $08074B50;
Value.
'PK'#7#8 (4 bytes)
Remarks.
To be used as signature value for data descriptor record.
Although not originally assigned a signature, the value $08074b50 has commonly been adopted as a signature value for the data descriptor record. Implementers should be aware that ZIP files may be encountered with or without this signature marking data descriptors and should account for either case when reading ZIP files to ensure compatibility. When writing ZIP files, it is recommended to include the signature value marking the data descriptor record. When the signature is used, the fields currently defined for the data descriptor record will immediately follow the signature.
SIGNATURE_LOCALHEADER
Local file header signature.
SIGNATURE_LOCALHEADER: UInt32 = $04034B50;
Value.
'PK'#3#4 (4 bytes)
Remarks.
To be used as signature value in local file header record.
SIGNATURE_ZIPENDOFHEADER
End of central dir signature.
SIGNATURE_ZIPENDOFHEADER: UInt32 = $06054B50;
Value.
'PK'#5#6 (4 bytes)
Remarks.
To be used as signature value in end of central directory record (appendix B, TZipEndOfCentralHeader).
EZLib
Compression support unit.
This is a header unit for ZLib. ZLib implementation is already compiled by C++ compiler into a set of .obj files. No external DLL used.
EZLibHeaders
Scope unavailable: no public unit-level responsibility, callable declaration or usage preconditions are specified here. The unit name alone does not establish an application-facing API contract; consult individual API entries where listed.