object frmPointerScannerSettings: TfrmPointerScannerSettings Left = 449 Height = 523 Top = 291 Width = 869 AutoSize = True BorderStyle = bsSingle Caption = 'Pointerscanner scanoptions' ClientHeight = 523 ClientWidth = 869 OnCreate = FormCreate OnDestroy = FormDestroy OnShow = FormShow Position = poScreenCenter LCLVersion = '1.6.0.4' object cbValueType: TComboBox AnchorSideLeft.Control = cbAddress AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = cbAddress AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 742 Height = 23 Top = 43 Width = 124 Anchors = [akTop, akRight] BorderSpacing.Left = 3 BorderSpacing.Right = 3 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '4 Byte' 'Float' 'Double' ) Style = csDropDownList TabOrder = 0 Text = '4 Byte' end object Panel2: TPanel AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner Left = 8 Height = 23 Top = 0 Width = 418 AutoSize = True BorderSpacing.Left = 8 BevelOuter = bvNone ClientHeight = 23 ClientWidth = 418 TabOrder = 1 object rbFindAddress: TRadioButton AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = Panel2 Left = 0 Height = 19 Top = 4 Width = 106 BorderSpacing.Top = 4 Caption = 'Scan for address' Checked = True OnChange = rbFindValueClick TabOrder = 0 TabStop = True end object rbFindValue: TRadioButton AnchorSideLeft.Control = rbFindAddress AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = rbFindAddress Left = 109 Height = 19 Top = 4 Width = 174 BorderSpacing.Left = 3 Caption = 'Scan for addresses with value' OnChange = rbFindValueClick TabOrder = 1 end object rbGeneratePointermap: TRadioButton AnchorSideLeft.Control = rbFindValue AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = rbFindValue Left = 286 Height = 19 Top = 4 Width = 132 BorderSpacing.Left = 3 Caption = 'Generate pointermap' OnChange = rbFindValueClick TabOrder = 2 end end object cbUseLoadedPointermap: TCheckBox AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = Panel2 AnchorSideTop.Side = asrBottom Left = 8 Height = 19 Hint = 'Use this if you have created a pointermap on a system that runs the game, but you wish to do the scan on another system (or multiple systems).'#13#10'Checking this option will open a dialog where you can select the pointermap' Top = 24 Width = 137 BorderSpacing.Top = 1 Caption = 'Use saved pointermap' OnChange = cbUseLoadedPointermapChange ParentShowHint = False ShowHint = True TabOrder = 2 end object cbCompareToOtherPointermaps: TCheckBox AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = cbAddress AnchorSideTop.Side = asrBottom Left = 8 Height = 19 Hint = 'When ticked you can add other pointermaps which will be used to verify that the pointers it finds are correct. You will have to fill in the correct address for each pointermap you provide.'#13#10'Note: expect at least the size of the game itself in memory for every pointermap used'#13#10 Top = 65 Width = 274 BorderSpacing.Top = 1 Caption = 'Compare results with other saved pointermap(s)' OnChange = cbCompareToOtherPointermapsChange ParentShowHint = False ShowHint = True TabOrder = 3 end object cbShowAdvancedOptions: TCheckBox AnchorSideLeft.Control = cbCompareToOtherPointermaps AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = cbCompareToOtherPointermaps AnchorSideBottom.Control = Panel3 Left = 316 Height = 19 Top = 65 Width = 146 Anchors = [akLeft, akBottom] BorderSpacing.Left = 34 Caption = 'Show advanced options' OnChange = cbShowAdvancedOptionsChange TabOrder = 4 end object Panel3: TPanel AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = cbCompareToOtherPointermaps AnchorSideTop.Side = asrBottom Left = 8 Height = 198 Top = 84 Width = 672 AutoSize = True BevelOuter = bvNone BorderStyle = bsSingle ClientHeight = 194 ClientWidth = 668 Color = clWindow ParentColor = False TabOrder = 5 Visible = False object Panel4: TPanel AnchorSideLeft.Control = Panel3 AnchorSideTop.Control = Panel3 Left = 0 Height = 194 Top = 0 Width = 299 AutoSize = True BevelOuter = bvNone ClientHeight = 194 ClientWidth = 299 TabOrder = 0 object cbIncludeSystemModules: TCheckBox AnchorSideLeft.Control = CbAlligned AnchorSideTop.Control = cbHeapOnly AnchorSideTop.Side = asrBottom Left = 7 Height = 19 Top = 175 Width = 148 Caption = 'Include system modules' TabOrder = 0 end object cbHeapOnly: TCheckBox AnchorSideLeft.Control = cbUseHeapData AnchorSideTop.Control = cbUseHeapData AnchorSideTop.Side = asrBottom Left = 23 Height = 19 Hint = 'If the address you search for isn''t a heap address, the scan will return 0 results' Top = 156 Width = 273 BorderSpacing.Left = 16 Caption = 'Only allow static and heap addresses in the path' Enabled = False OnClick = cbHeapOnlyClick ParentShowHint = False ShowHint = True TabOrder = 1 end object cbUseHeapData: TCheckBox AnchorSideLeft.Control = CbAlligned AnchorSideTop.Control = Panel5 AnchorSideTop.Side = asrBottom Left = 7 Height = 19 Hint = 'When this is checked the heap is used to figure out the offset sizes, instead of blindly guessing them.'#13#10'pro: Greatly improve speed and a lot less useless results'#13#10'con: if the game allocates gigantic chunks of heap memory, and then divides it up itself, this will give wrong results.'#13#10#13#10'In other cases this will give perfect pointers ' Top = 137 Width = 260 Caption = 'Improve pointerscan with gathered heap data' OnClick = cbUseHeapDataClick ParentShowHint = False ShowHint = True TabOrder = 2 end object Label13: TLabel AnchorSideLeft.Control = CbAlligned AnchorSideTop.Control = cbOnlyOneStatic AnchorSideTop.Side = asrBottom Left = 7 Height = 15 Top = 76 Width = 229 Caption = 'Pointer path may only be inside this region:' ParentColor = False end object cbOnlyOneStatic: TCheckBox AnchorSideLeft.Control = CbAlligned AnchorSideTop.Control = cbNoReadOnly AnchorSideTop.Side = asrBottom Left = 7 Height = 19 Hint = 'When the pointerscanner goes through the list of pointervalues with a specific value, this will stop exploring other paths as soon as it encounters a static pointer to that value'#13#10#13#10'pro: Fast'#13#10'con: You may miss some valid results ' Top = 57 Width = 292 Caption = 'Stop traversing a path when a static has been found' ParentShowHint = False ShowHint = True TabOrder = 3 end object cbNoReadOnly: TCheckBox AnchorSideLeft.Control = CbAlligned AnchorSideTop.Control = cbStaticOnly AnchorSideTop.Side = asrBottom Left = 7 Height = 19 Hint = 'When checked the pointerscan will throw away memory that is readonly. So when it looks for paths, it won''t encounter paths that pass through read only memory blocks.'#13#10#13#10'When it''s unchecked, it does include readonly memory'#13#10#13#10#13#10'pro: faster, less useless results'#13#10'con: If the game decides to mark a pointer as readonly ce won''t find it ' Top = 38 Width = 252 Caption = 'Don''t include pointers with read-only nodes' Checked = True OnChange = canNotReuse ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 4 end object cbStaticOnly: TCheckBox AnchorSideLeft.Control = CbAlligned AnchorSideTop.Control = CbAlligned AnchorSideTop.Side = asrBottom Left = 7 Height = 19 Hint = 'When checked the pointerscan will only store a path when it starts with a static address. (or easily looked up address)'#13#10'When it''s disabled, it finds every single pointer path'#13#10#13#10'pro: Fast'#13#10'con: It may miss pointers that are accessed by special paths like thread local storage. (but even then they''d be useless for ce as they will change)' Top = 19 Width = 210 Caption = 'Only find paths with a static address' Checked = True OnChange = cbStaticOnlyChange ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 5 end object CbAlligned: TCheckBox AnchorSideLeft.Control = Panel4 AnchorSideTop.Control = Panel4 Left = 7 Height = 19 Hint = 'When enabled, only pointers that are stored in an address dividable by 4 are looked at'#13#10'When disabled, it won''t bother.'#13#10#13#10'pro: Fast scans'#13#10'Con: On some horrible designed games that you shouldn''t even play it won''t find the paths' Top = 0 Width = 198 BorderSpacing.Left = 7 Caption = 'Addresses must be 32-bit alligned' Checked = True OnChange = canNotReuse ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 6 end object Panel5: TPanel AnchorSideLeft.Control = Label13 AnchorSideTop.Control = Label13 AnchorSideTop.Side = asrBottom Left = 7 Height = 46 Top = 91 Width = 110 AutoSize = True BevelOuter = bvNone ClientHeight = 46 ClientWidth = 110 TabOrder = 7 object edtReverseStart: TEdit AnchorSideTop.Control = Panel5 AnchorSideRight.Control = Panel5 AnchorSideRight.Side = asrBottom Left = 30 Height = 23 Top = 0 Width = 80 Anchors = [akTop, akRight] CharCase = ecUppercase MaxLength = 8 OnChange = canNotReuse TabOrder = 0 Text = '00000000' end object Label10: TLabel AnchorSideTop.Control = edtReverseStart AnchorSideTop.Side = asrCenter AnchorSideRight.Control = edtReverseStart Left = 0 Height = 15 Top = 4 Width = 28 Anchors = [akTop, akRight] BorderSpacing.Right = 2 Caption = 'From' ParentColor = False end object edtReverseStop: TEdit AnchorSideTop.Control = edtReverseStart AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Panel5 AnchorSideRight.Side = asrBottom Left = 30 Height = 23 Top = 23 Width = 80 Anchors = [akTop, akRight] CharCase = ecUppercase MaxLength = 8 OnChange = canNotReuse TabOrder = 1 Text = '7FFFFFFF' end object Label11: TLabel AnchorSideTop.Control = edtReverseStop AnchorSideTop.Side = asrCenter AnchorSideRight.Control = edtReverseStop Left = 13 Height = 15 Top = 27 Width = 17 Anchors = [akTop, akRight] Caption = 'To:' ParentColor = False end end end object Panel6: TPanel AnchorSideLeft.Control = Panel4 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel4 Left = 306 Height = 179 Top = 0 Width = 362 AutoSize = True BorderSpacing.Left = 7 BevelOuter = bvNone ClientHeight = 179 ClientWidth = 362 TabOrder = 1 object cbAcceptNonModuleVtable: TCheckBox AnchorSideLeft.Control = cbClassPointersOnly AnchorSideTop.Control = cbClassPointersOnly AnchorSideTop.Side = asrBottom Left = 16 Height = 19 Top = 19 Width = 205 BorderSpacing.Left = 16 Caption = 'Also accept non-module addresses' Enabled = False TabOrder = 0 end object cbClassPointersOnly: TCheckBox AnchorSideLeft.Control = Panel6 AnchorSideTop.Control = Panel6 Left = 0 Height = 19 Hint = 'Object oriented programming languages tend to implement classobjects by having a pointer in the first element to something that describes the class'#13#10'With this option enabled, ce will check if it''s a classobject by checking that rule. If not, it won''t see it as a pointer.'#13#10'pro:Tremendous speed increase and almost perfect pointers'#13#10'con:Doesn''t work with runtime generated classes (java, .net) ' Top = 0 Width = 354 Caption = 'First element of pointerstruct must point to module (e.g vtable)' OnChange = canNotReuse ParentShowHint = False ShowHint = True TabOrder = 1 end object cbNoLoop: TCheckBox AnchorSideLeft.Control = Panel6 AnchorSideTop.Control = cbAcceptNonModuleVtable AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Hint = 'This will filter out pointerpaths that ended up in a loop'#13#10'e.g:'#13#10'base->p1->p2->p3->p1->p4'#13#10#13#10'you could just as well do base->p1->p4 then, so throw this one away (base->p1->p4 will be found another way)'#13#10#13#10'pro: Less results so less diskspace used'#13#10'con: slightly slows down the scan as it needs to check for loops every single iteration ' Top = 38 Width = 126 Caption = 'No looping pointers' Checked = True ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 2 end object cbStaticStacks: TCheckBox AnchorSideLeft.Control = Panel6 AnchorSideTop.Control = cbNoLoop AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Hint = 'This allows the stack of threads to be seen as static addresses by the pointerscan.'#13#10'The main thread is always a sure bet that it''s the first one in the list. And often the second thread created is pretty stable as well.'#13#10'With more there''s a bigger change they get created and destroyed randomly'#13#10#13#10'When a program enters a function and exits it, the stack pointer decreases and increases, and the data there gets written to.'#13#10'The farther the game is inside function calls, the more static the older data will be.'#13#10#13#10'With max stack offset: you can set the max size that can be deemed as static enough.'#13#10#13#10'pro: It finds paths otherwise never found'#13#10'con: More results, more diskspace ' Top = 57 Width = 362 Caption = 'Allow stack addresses of the first thread(s) to be handled as static' Checked = True OnChange = cbStaticStacksChange ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 3 end object lblNumberOfStackThreads: TLabel AnchorSideLeft.Control = cbStaticStacks AnchorSideTop.Control = edtThreadStacks AnchorSideTop.Side = asrCenter Left = 16 Height = 15 Top = 80 Width = 221 BorderSpacing.Left = 16 Caption = 'Number of threads from oldest to newest:' ParentColor = False end object edtThreadStacks: TEdit AnchorSideLeft.Control = lblNumberOfStackThreads AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = cbStaticStacks AnchorSideTop.Side = asrBottom Left = 237 Height = 23 Hint = 'Fill in the total number of threads that should be allowed to be used as a stack lookup.'#13#10'Thread 1 is usually the main thread of the game, but if that one spawns another thread for game related events, you might want to have that secondary thread as well.'#13#10'More threads is not recommend as they may get created and destroyed on the fly, and are therefore useless as a lookup base, but it depends on the game.' Top = 76 Width = 24 ParentShowHint = False ShowHint = True TabOrder = 4 Text = '2' end object edtStackSize: TEdit AnchorSideLeft.Control = lblStackSize AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = edtThreadStacks AnchorSideTop.Side = asrBottom Left = 252 Height = 23 Top = 99 Width = 80 TabOrder = 5 Text = '4096' end object lblStackSize: TLabel AnchorSideLeft.Control = lblNumberOfStackThreads AnchorSideTop.Control = edtStackSize AnchorSideTop.Side = asrCenter Left = 16 Height = 15 Top = 103 Width = 236 Caption = 'Max stackoffset to be deemed static enough:' ParentColor = False end object cbStackOnly: TCheckBox AnchorSideLeft.Control = lblStackSize AnchorSideTop.Control = edtStackSize AnchorSideTop.Side = asrBottom Left = 16 Height = 19 Hint = 'Enable this if you wish to only find pointer paths with a stack address.'#13#10'Combine this with "Only find paths with a static address" (default on) else this option will have no effect'#13#10#13#10'pro: You''ll only get paths from the stack'#13#10'con: You don''t get get paths from random dll''s or the .exe ' Top = 122 Width = 224 Caption = 'Stack addresses as ONLY static address' ParentShowHint = False ShowHint = True TabOrder = 6 end object cbLimitScanToRegionFile: TCheckBox AnchorSideLeft.Control = Panel6 AnchorSideTop.Control = cbStackOnly AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Top = 141 Width = 194 Caption = 'Limit scan to specified region file' OnChange = cbLimitScanToRegionFileChange TabOrder = 7 end object cbCompressedPointerscanFile: TCheckBox AnchorSideLeft.Control = Panel6 AnchorSideTop.Control = cbLimitScanToRegionFile AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Hint = 'Compresses the generated .PTR files slightly so they take less space on the disk and less time writing to disk.'#13#10'Most of the time the bottleneck of a pointerscan is disk writing, so it is recommended to use this option.'#13#10#13#10'Compressed .PTR files can not be read out by older Cheat Engine versions' Top = 160 Width = 170 Caption = 'Compressed pointerscan file' Checked = True ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 8 end end end object cbAddress: TComboBox AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = cbUseLoadedPointermap AnchorSideTop.Side = asrBottom AnchorSideRight.Control = cbValueType Left = 8 Height = 21 Top = 43 Width = 731 Anchors = [akTop, akLeft, akRight] DropDownCount = 0 ItemHeight = 15 OnChange = edtAddressChange OnDrawItem = cbAddressDrawItem Style = csOwnerDrawFixed TabOrder = 6 end object Panel1: TPanel AnchorSideLeft.Control = Owner AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = Panel9 AnchorSideTop.Side = asrBottom Left = 269 Height = 86 Top = 401 Width = 330 AutoSize = True BorderSpacing.Top = 8 BorderSpacing.Bottom = 4 BevelOuter = bvNone ClientHeight = 86 ClientWidth = 330 Constraints.MinWidth = 330 TabOrder = 7 OnClick = Panel1Click object Panel8: TPanel AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Panel1 Left = 0 Height = 86 Top = 0 Width = 183 AutoSize = True BevelOuter = bvNone ClientHeight = 86 ClientWidth = 183 TabOrder = 0 object Label9: TLabel AnchorSideTop.Control = edtThreadcount AnchorSideTop.Side = asrCenter AnchorSideRight.Control = edtThreadcount Left = 0 Height = 15 Top = 4 Width = 123 Anchors = [akTop, akRight] Caption = 'Nr of threads scanning:' ParentColor = False end object edtThreadcount: TEdit AnchorSideTop.Control = Panel8 AnchorSideRight.Control = Panel8 AnchorSideRight.Side = asrBottom Left = 123 Height = 23 Top = 0 Width = 60 Anchors = [akTop, akRight] TabOrder = 0 Text = '2' end object editStructsize: TEdit AnchorSideTop.Control = edtThreadcount AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Panel8 AnchorSideRight.Side = asrBottom Left = 123 Height = 23 Top = 33 Width = 60 Anchors = [akTop, akRight] BorderSpacing.Top = 10 TabOrder = 1 Text = '2047' end object Label3: TLabel AnchorSideTop.Control = editStructsize AnchorSideTop.Side = asrCenter AnchorSideRight.Control = editStructsize Left = 2 Height = 15 Top = 37 Width = 121 Anchors = [akTop, akRight] Caption = 'Maximum offset value:' ParentColor = False end object btnOk: TButton AnchorSideTop.Control = editStructsize AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Panel8 AnchorSideRight.Side = asrBottom Left = 108 Height = 25 Top = 61 Width = 75 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Top = 5 Caption = 'OK' Constraints.MinWidth = 75 Default = True OnClick = btnOkClick TabOrder = 2 end end object Panel7: TPanel AnchorSideLeft.Control = Panel8 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 Left = 190 Height = 86 Top = 0 Width = 140 AutoSize = True BorderSpacing.Left = 7 BevelOuter = bvNone ClientHeight = 86 ClientWidth = 140 TabOrder = 1 object Label12: TLabel AnchorSideLeft.Control = Panel7 AnchorSideTop.Control = editMaxLevel AnchorSideTop.Side = asrCenter AnchorSideRight.Control = editMaxLevel AnchorSideRight.Side = asrCenter Left = 0 Height = 15 Top = 37 Width = 49 Caption = 'Max level' ParentColor = False end object ComboBox1: TComboBox AnchorSideLeft.Control = Panel7 AnchorSideTop.Control = Panel7 Left = 0 Height = 23 Top = 0 Width = 140 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( 'Idle' 'Lowest' 'Lower' 'Normal' 'Higher' 'Highest' 'TimeCritical' ) Style = csDropDownList TabOrder = 0 Text = 'Normal' end object editMaxLevel: TEdit AnchorSideLeft.Control = Label12 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ComboBox1 AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ComboBox1 AnchorSideRight.Side = asrBottom Left = 53 Height = 23 Top = 33 Width = 87 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 4 BorderSpacing.Top = 10 TabOrder = 1 Text = '5' end object btnCancel: TButton AnchorSideLeft.Control = Panel7 AnchorSideTop.Control = editMaxLevel AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 Height = 25 Top = 61 Width = 75 AutoSize = True BorderSpacing.Top = 5 Cancel = True Caption = 'Cancel' Constraints.MinWidth = 75 ModalResult = 2 TabOrder = 2 end end end object Panel9: TPanel AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = Panel3 AnchorSideTop.Side = asrBottom Left = 8 Height = 111 Top = 282 Width = 597 AutoSize = True BevelOuter = bvNone ClientHeight = 111 ClientWidth = 597 TabOrder = 8 object Panel10: TPanel Left = 0 Height = 111 Top = 0 Width = 223 AutoSize = True BevelOuter = bvNone ClientHeight = 111 ClientWidth = 223 TabOrder = 0 object cbMustStartWithBase: TCheckBox AnchorSideLeft.Control = Panel10 AnchorSideTop.Control = edtMaxOffsetsPerNode AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Hint = 'Will only mark the given range as valid base address (Will reduce the number of results)'#13#10'This internally makes use of the "Only find paths with a static address" feature by marking the provided range as static only, so it must be enabled.' Top = 25 Width = 222 Caption = 'Base address must be in specific range' OnChange = cbMustStartWithBaseChange ParentShowHint = False ShowHint = True TabOrder = 0 end object cbMustEndWithSpecificOffset: TCheckBox AnchorSideLeft.Control = Panel10 AnchorSideTop.Control = Panel12 AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Top = 92 Width = 223 Caption = 'Pointers must end with specific offsets' OnChange = cbMustEndWithSpecificOffsetChange TabOrder = 1 end object cbMaxOffsetsPerNode: TCheckBox AnchorSideLeft.Control = Panel10 AnchorSideTop.Control = edtMaxOffsetsPerNode AnchorSideTop.Side = asrCenter Left = 0 Height = 19 Hint = 'When the pointerscan looks through the list of pointers with a specific value, it goes through every single pointer that has that value. Every time increasing the offset slightly.'#13#10'With this feature enabled the pointerscan will only check the first few pointers with that value.'#13#10#13#10'pro: Extremely fast, and the results have the lowest pointer paths possible.'#13#10'con: You''ll miss a lot of pointers that might be valid too ' Top = 4 Width = 181 Caption = 'Max different offsets per node:' OnChange = cbMaxOffsetsPerNodeChange ParentShowHint = False ShowHint = True TabOrder = 2 end object edtMaxOffsetsPerNode: TEdit AnchorSideLeft.Control = cbMaxOffsetsPerNode AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel10 Left = 181 Height = 23 Top = 2 Width = 40 BorderSpacing.Top = 2 Enabled = False TabOrder = 3 Text = '2' end object Panel12: TPanel AnchorSideLeft.Control = Panel10 AnchorSideTop.Control = cbMustStartWithBase AnchorSideTop.Side = asrBottom AnchorSideRight.Control = cbMustStartWithBase AnchorSideRight.Side = asrBottom Left = 0 Height = 48 Top = 44 Width = 214 AutoSize = True BevelOuter = bvNone ClientHeight = 48 ClientWidth = 214 TabOrder = 4 Visible = False object edtBaseFrom: TEdit AnchorSideLeft.Control = Label4 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel12 AnchorSideRight.Control = Panel12 AnchorSideRight.Side = asrBottom Left = 28 Height = 23 Top = 0 Width = 186 Anchors = [akTop, akRight] TabOrder = 0 end object Label2: TLabel AnchorSideLeft.Control = Panel12 AnchorSideTop.Control = edtBaseTo AnchorSideTop.Side = asrCenter AnchorSideRight.Control = edtBaseTo Left = 14 Height = 15 Top = 29 Width = 14 Anchors = [akTop, akRight] Caption = 'To' ParentColor = False end object Label4: TLabel AnchorSideLeft.Control = Panel12 AnchorSideTop.Control = edtBaseFrom AnchorSideTop.Side = asrCenter AnchorSideRight.Control = edtBaseFrom Left = 0 Height = 15 Top = 4 Width = 28 Anchors = [akTop, akRight] Caption = 'From' ParentColor = False end object edtBaseTo: TEdit AnchorSideTop.Control = edtBaseFrom AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Panel12 AnchorSideRight.Side = asrBottom Left = 28 Height = 23 Top = 25 Width = 186 Anchors = [akTop, akRight] BorderSpacing.Top = 2 TabOrder = 1 end end end object Panel11: TPanel AnchorSideLeft.Control = Panel10 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel9 Left = 308 Height = 62 Top = 0 Width = 289 AutoSize = True BorderSpacing.Left = 85 BevelOuter = bvNone ClientHeight = 62 ClientWidth = 289 TabOrder = 1 object cbAllowRuntimeWorkers: TCheckBox AnchorSideLeft.Control = Panel11 AnchorSideTop.Control = Panel11 Left = 0 Height = 19 Hint = 'Opens a port that other systems running the pointerscanner can connect to and help out with the scan' Top = 0 Width = 217 Caption = 'Allow scanners to connect at runtime' OnChange = cbAllowRuntimeWorkersChange ParentShowHint = False ShowHint = True TabOrder = 0 end object lblPort: TLabel AnchorSideLeft.Control = cbAllowRuntimeWorkers AnchorSideTop.Control = cbAllowRuntimeWorkers AnchorSideTop.Side = asrBottom Left = 16 Height = 15 Top = 24 Width = 25 BorderSpacing.Left = 16 BorderSpacing.Top = 5 Caption = 'Port:' ParentColor = False end object edtDistributedPort: TEdit AnchorSideLeft.Control = lblPort AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = lblPort AnchorSideTop.Side = asrCenter Left = 41 Height = 23 Top = 20 Width = 103 Enabled = False TabOrder = 1 Text = '52737' end object edtDistributedPassword: TEdit AnchorSideLeft.Control = Label1 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = edtDistributedPort AnchorSideRight.Control = Panel11 AnchorSideRight.Side = asrBottom Left = 204 Height = 23 Top = 20 Width = 80 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 5 BorderSpacing.Right = 5 Constraints.MinWidth = 80 Enabled = False MaxLength = 255 TabOrder = 2 end object Label1: TLabel AnchorSideLeft.Control = edtDistributedPort AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = edtDistributedPort AnchorSideTop.Side = asrCenter Left = 149 Height = 15 Top = 24 Width = 50 BorderSpacing.Left = 5 Caption = 'Password' ParentColor = False end object cbConnectToNode: TCheckBox AnchorSideLeft.Control = Panel11 AnchorSideTop.Control = edtDistributedPort AnchorSideTop.Side = asrBottom Left = 0 Height = 19 Hint = 'When checked will send a broadcast message on the local network which will tell pointer scanner systems to join this scan if they are set to auto join'#13#10#13#10'You can use "Setup specific IP''s to notify" to notify systems of this scan that are outside of the local network' Top = 43 Width = 174 Caption = 'Connect to pointerscan node' OnChange = cbConnectToNodeChange ParentShowHint = False ShowHint = True TabOrder = 3 end end end object odLoadPointermap: TOpenDialog DefaultExt = '.scandata' Filter = 'All files (*.*)|*.*|scandata files (*.scandata)|*.scandata' FilterIndex = 2 left = 744 top = 160 end object il: TImageList left = 720 top = 232 Bitmap = { 4C69020000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006360 F80AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007774FF1F7774 FF2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00625FF82B5D5B F76F5956F53EFFFFFF00FFFFFF00FFFFFF00FFFFFF007774FF1F7A77FFFF7976 FEFF726FFD2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00615EF82B6461F8FF6A68 F9FF5451F3A84F4DF229FFFFFF00FFFFFF007774FF1F7A77FFFF817EFFFF817E FEFF7471FDFF6C69FB2BFFFFFF00FFFFFF00605DF72B625FF8FF6F6DFBFF7E7C FFFF625FF8FF4A47F06F4542EE02FFFFFF007673FF087471FEFD7D7AFEFF8A87 FFFF7C79FDFF6C69FBFF6361F92B5F5CF72B615EF8FF6E6CFAFF7D7AFFFF615F F7FF4946F0FC4441EE05FFFFFF00FFFFFF00FFFFFF00716EFD086E6BFCFC7774 FDFF8682FFFF7673FCFF6462F8FF605DF7FF6D6AFAFF7B79FFFF605DF7FF4845 EFFC4341EE08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006967FB086663 F9FC706DFBFF807EFFFF7E7BFFFF7C79FFFF7977FFFF5E5CF7FF4744EFFC4240 EE08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00615E F8085D5AF6FD7D79FFFF5E5BFFFF5B58FFFF7674FFFF4643EFFD413FED08FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005C59 F62B5D5BF7FF7976FFFF5956FFFF5754FFFF7270FFFF4846F0FF3C39EB2BFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005B58F62B5C5A F6FF6764FAFF7472FFFF7370FFFF706EFFFF6E6CFFFF5755F7FF3F3DEEFF3230 E82BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005A57F52B5B59F6FF6663 FAFF7471FFFF5A58F6FF4341EEFC3E3CECFD504DF4FF6867FFFF504EF5FF3634 EBFF2A27E52BFFFFFF00FFFFFF00FFFFFF005956F52B5B58F6FF6562FAFF7170 FFFF5956F6FF4240EEFC3E3BEC083937EB083532E9FC4745F2FF6362FFFF4A48 F4FF2F2DE9FF2220E32BFFFFFF00FFFFFF005451F3415856F5FF6361FAFF5855 F6FF413FEDFC3D3AEC08FFFFFF00FFFFFF00302DE7082C2AE6FC413FF1FF4C4A F6FF312FEAFF1F1DE241FFFFFF00FFFFFF00FFFFFF004A47F0414F4CF2FF403E EDFD3C39EB08FFFFFF00FFFFFF00FFFFFF00FFFFFF002725E5082422E4FC312F EAFF1F1DE241FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003F3DED413B38 EB08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00211FE3081E1C E241FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00EAC39DFFE6BF96FFE4BB92FFE4BB92FFD1A06CF5D09E6DF6CC96 5FDAC479427EB2673C09FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00E5BE96FFFFFFFEFFFDF3E9FFFDF3EAFFFCF2E8FFFAEFE3FFFAF2 E7FFEABB88FFCF8555B3B4693D0CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00E4BB93FFFEF5EDFFFCDEC5FFFBE0C7FFF9DCC2FFF5D3B4FFFEF9 F3FFFAE2C4FFECC193FFC37D4893FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00E4BB92FFFEF6F0FFFCE2CDFFFCE3CDFFFADFC8FFF7D9BCFFF5E9 DDFFFAF3EBFFFBF8F3FFCA8353FEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00E4BB92FFFEF7F1FFFCE5D2FFFCE4D1FFFBE2CCFFF9DDC4FFF6D7 BBFFF3D1AFFFFAEFE4FFCC8758FE34B4D9D05EC2E1FA60C3E2FA60C3E2FA60C3 E2FA5FC3E2FAE4BB91FFFFF7F2FFFEE7D5FFFEE7D5FFFDE5D1FFFAE0CAFFF9DE C4FFF7D9BCFFFDF2E7FFCC8757FE36B3DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFE FFFFFEFFFFFFE4BA91FFFFF7F0FFFFE7D5FFFDE7D6FFFDE6D4FFFCE4D0FFFBE3 CBFFFADCC2FFFEF3E8FFCC8656FE35AFDAF0F7FCFEFF8EE4F8FF91DEF5FF9FE0 F5FFACE1F6FFCA8452FFFFF7F1FFFFE9D9FFFFEADBFFFFE9D9FFFFE7D7FFFFE5 D2FFFFE2CBFFFFF7F1FFCB8555FE36AADAF2F1FAFDFF94DEF5FF93DCF4FF64BC E9FF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594 DAFF3594DAFFFBF6EFFFCC8355FE35ABDAFAE8F6FBFF70BCE7FF55AAE2FF4DA5 E0FF91C9EBFFFAF3EFFFFDFEFDFFFFFDFCFFFFFDFCFFFEFDFCFFFEFCFBFFFEFE FDFF3594DAFFEFF2E8FFCE8156FF37A6DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FC FFFFF3FCFEFF9AE4F4FF9AE6F7FF9BE6F6FF9DE5F5FF9EE5F5FF9FE5F4FFDAF3 F8FF3594DAFFFDF4EEFFCA8054F936A1DAF9F6FCFEFF94E5F8FF93E5F8FF93E5 F8FF91E5F8FF93DBE9FF93D7E3FF93D2DCFF90CED7FF8CC8CFFF86C1C6FFC9D8 D6FF3594DAFFC57444E8CA7F53F1369ADAF8F2FAFDFF94E6F8FF92E5F8FF90E5 F8FF8BE3F8FF86E2F7FF7FE1F7FF77DEF6FF6CDCF6FF5ED9F4FF4FD5F3FFCCF2 FBFF3594DAFFFFFFFF00FFFFFF003594DAF7EFFAFEFF93E5F8FF8FE4F8FF89E3 F8FF82E1F7FF7ADFF7FF71DEF6FF67DBF5FF5BD8F4FF4DD4F3FF40D1F2FFCAF2 FBFF3594DAFFFFFFFF00FFFFFF00338ED9FBDCF0FAFF98E1F6FF95E0F6FF92DF F6FF8EDEF5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EA F8FF3594DAFFFFFFFF00FFFFFF002C86D8002D88D8F72D87D8F72D88D8F72D88 D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87D8F72D88 D8F72C86D800FFFFFF00FFFFFF00 } end object odLoadRegionFile: TOpenDialog DefaultExt = '.mregion' Filter = 'Memory region files (*.mregion)|*.mregion|All files (*.*)|*.*' left = 744 top = 368 end end