- Added error handling when loading Locations and Profiles (fixes #2)
This commit is contained in:
parent
4280db3f7e
commit
6eaf10e73e
|
@ -5,7 +5,7 @@ object frmMain: TfrmMain
|
|||
Width = 766
|
||||
ActiveControl = oglGameWindow
|
||||
Caption = 'UO CentrED'
|
||||
ClientHeight = 583
|
||||
ClientHeight = 580
|
||||
ClientWidth = 766
|
||||
Constraints.MinHeight = 603
|
||||
Constraints.MinWidth = 766
|
||||
|
@ -22,7 +22,7 @@ object frmMain: TfrmMain
|
|||
object pnlBottom: TPanel
|
||||
Left = 0
|
||||
Height = 31
|
||||
Top = 552
|
||||
Top = 549
|
||||
Width = 766
|
||||
Align = alBottom
|
||||
BevelOuter = bvNone
|
||||
|
@ -33,7 +33,7 @@ object frmMain: TfrmMain
|
|||
Left = 11
|
||||
Height = 14
|
||||
Top = 7
|
||||
Width = 10
|
||||
Width = 11
|
||||
Caption = 'X:'
|
||||
ParentColor = False
|
||||
end
|
||||
|
@ -41,7 +41,7 @@ object frmMain: TfrmMain
|
|||
Left = 88
|
||||
Height = 14
|
||||
Top = 7
|
||||
Width = 9
|
||||
Width = 10
|
||||
Caption = 'Y:'
|
||||
ParentColor = False
|
||||
end
|
||||
|
@ -54,10 +54,10 @@ object frmMain: TfrmMain
|
|||
ParentColor = False
|
||||
end
|
||||
object lblTip: TLabel
|
||||
Left = 534
|
||||
Left = 528
|
||||
Height = 31
|
||||
Top = 0
|
||||
Width = 224
|
||||
Width = 230
|
||||
Align = alRight
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Right = 8
|
||||
|
@ -66,10 +66,10 @@ object frmMain: TfrmMain
|
|||
ParentColor = False
|
||||
end
|
||||
object lblTipC: TLabel
|
||||
Left = 511
|
||||
Left = 498
|
||||
Height = 31
|
||||
Top = 0
|
||||
Width = 23
|
||||
Width = 30
|
||||
Align = alRight
|
||||
Caption = 'Tip: '
|
||||
Font.Height = -11
|
||||
|
@ -80,7 +80,7 @@ object frmMain: TfrmMain
|
|||
end
|
||||
object edX: TSpinEdit
|
||||
Left = 24
|
||||
Height = 21
|
||||
Height = 19
|
||||
Top = 3
|
||||
Width = 55
|
||||
MaxValue = 100000
|
||||
|
@ -88,7 +88,7 @@ object frmMain: TfrmMain
|
|||
end
|
||||
object edY: TSpinEdit
|
||||
Left = 104
|
||||
Height = 21
|
||||
Height = 19
|
||||
Top = 3
|
||||
Width = 52
|
||||
MaxValue = 100000
|
||||
|
@ -107,7 +107,7 @@ object frmMain: TfrmMain
|
|||
end
|
||||
object pcLeft: TPageControl
|
||||
Left = 0
|
||||
Height = 528
|
||||
Height = 525
|
||||
Top = 24
|
||||
Width = 224
|
||||
ActivePage = tsTiles
|
||||
|
@ -116,13 +116,13 @@ object frmMain: TfrmMain
|
|||
TabOrder = 1
|
||||
object tsTiles: TTabSheet
|
||||
Caption = 'Tiles'
|
||||
ClientHeight = 502
|
||||
ClientWidth = 216
|
||||
ClientHeight = 492
|
||||
ClientWidth = 218
|
||||
object lblFilter: TLabel
|
||||
AnchorSideLeft.Control = cbTerrain
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cbTerrain
|
||||
Left = 75
|
||||
Left = 81
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 30
|
||||
|
@ -139,9 +139,9 @@ object frmMain: TfrmMain
|
|||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = spTileList
|
||||
Left = 4
|
||||
Height = 266
|
||||
Top = 50
|
||||
Width = 208
|
||||
Height = 250
|
||||
Top = 56
|
||||
Width = 210
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 4
|
||||
|
@ -193,13 +193,13 @@ object frmMain: TfrmMain
|
|||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 181
|
||||
Top = 321
|
||||
Width = 216
|
||||
Top = 311
|
||||
Width = 218
|
||||
Align = alBottom
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
Caption = 'Random pool'
|
||||
ClientHeight = 163
|
||||
ClientWidth = 212
|
||||
ClientHeight = 167
|
||||
ClientWidth = 216
|
||||
TabOrder = 1
|
||||
object btnAddRandom: TSpeedButton
|
||||
AnchorSideLeft.Control = gbRandom
|
||||
|
@ -359,10 +359,10 @@ object frmMain: TfrmMain
|
|||
object btnRandomPresetSave: TSpeedButton
|
||||
AnchorSideTop.Control = cbRandomPreset
|
||||
AnchorSideRight.Control = btnRandomPresetDelete
|
||||
Left = 160
|
||||
Left = 164
|
||||
Height = 22
|
||||
Hint = 'Save Preset'
|
||||
Top = 138
|
||||
Top = 134
|
||||
Width = 22
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 4
|
||||
|
@ -413,10 +413,10 @@ object frmMain: TfrmMain
|
|||
AnchorSideTop.Control = btnRandomPresetSave
|
||||
AnchorSideRight.Control = gbRandom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 186
|
||||
Left = 190
|
||||
Height = 22
|
||||
Hint = 'Delete Preset'
|
||||
Top = 138
|
||||
Top = 134
|
||||
Width = 22
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 4
|
||||
|
@ -473,9 +473,9 @@ object frmMain: TfrmMain
|
|||
AnchorSideBottom.Control = cbRandomPreset
|
||||
Cursor = 63
|
||||
Left = 4
|
||||
Height = 110
|
||||
Height = 106
|
||||
Top = 24
|
||||
Width = 204
|
||||
Width = 208
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 2
|
||||
|
@ -519,14 +519,14 @@ object frmMain: TfrmMain
|
|||
AnchorSideBottom.Control = gbRandom
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 21
|
||||
Top = 138
|
||||
Width = 152
|
||||
Height = 29
|
||||
Top = 134
|
||||
Width = 156
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Right = 4
|
||||
BorderSpacing.Bottom = 4
|
||||
ItemHeight = 13
|
||||
ItemHeight = 0
|
||||
OnChange = cbRandomPresetChange
|
||||
Style = csDropDownList
|
||||
TabOrder = 1
|
||||
|
@ -539,8 +539,8 @@ object frmMain: TfrmMain
|
|||
Cursor = crVSplit
|
||||
Left = 0
|
||||
Height = 5
|
||||
Top = 316
|
||||
Width = 216
|
||||
Top = 306
|
||||
Width = 218
|
||||
Align = alNone
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
ResizeAnchor = akBottom
|
||||
|
@ -550,10 +550,10 @@ object frmMain: TfrmMain
|
|||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = vdtTiles
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 108
|
||||
Height = 21
|
||||
Left = 110
|
||||
Height = 19
|
||||
Hint = 'Append S or T to restrict the search to Statics or Terrain.'
|
||||
Top = 287
|
||||
Top = 279
|
||||
Width = 96
|
||||
Anchors = [akRight, akBottom]
|
||||
BorderSpacing.Right = 8
|
||||
|
@ -572,10 +572,10 @@ object frmMain: TfrmMain
|
|||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = tsTiles
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 75
|
||||
Height = 21
|
||||
Left = 81
|
||||
Height = 19
|
||||
Top = 22
|
||||
Width = 125
|
||||
Width = 121
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Right = 16
|
||||
OnEditingDone = edFilterEditingDone
|
||||
|
@ -586,10 +586,10 @@ object frmMain: TfrmMain
|
|||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = cbTerrain
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 5
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 53
|
||||
Left = 4
|
||||
Height = 22
|
||||
Top = 30
|
||||
Width = 60
|
||||
Caption = 'Statics'
|
||||
Checked = True
|
||||
OnChange = cbStaticsChange
|
||||
|
@ -600,9 +600,9 @@ object frmMain: TfrmMain
|
|||
AnchorSideLeft.Control = tsTiles
|
||||
AnchorSideTop.Control = tsTiles
|
||||
Left = 4
|
||||
Height = 19
|
||||
Height = 22
|
||||
Top = 8
|
||||
Width = 55
|
||||
Width = 61
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Terrain'
|
||||
|
@ -614,25 +614,26 @@ object frmMain: TfrmMain
|
|||
end
|
||||
object tsClients: TTabSheet
|
||||
Caption = 'Clients'
|
||||
ClientHeight = 502
|
||||
ClientWidth = 216
|
||||
ClientHeight = 495
|
||||
ClientWidth = 218
|
||||
object lbClients: TListBox
|
||||
Left = 0
|
||||
Height = 502
|
||||
Height = 495
|
||||
Top = 0
|
||||
Width = 216
|
||||
Width = 218
|
||||
Align = alClient
|
||||
ItemHeight = 0
|
||||
OnDblClick = mnuGoToClientClick
|
||||
PopupMenu = pmClients
|
||||
Sorted = True
|
||||
TabOrder = 0
|
||||
TopIndex = -1
|
||||
end
|
||||
end
|
||||
object tsLocations: TTabSheet
|
||||
Caption = 'Locations'
|
||||
ClientHeight = 502
|
||||
ClientWidth = 216
|
||||
ClientHeight = 495
|
||||
ClientWidth = 218
|
||||
object btnClearLocations: TSpeedButton
|
||||
AnchorSideLeft.Control = btnDeleteLocation
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
|
@ -640,7 +641,7 @@ object frmMain: TfrmMain
|
|||
Left = 128
|
||||
Height = 22
|
||||
Hint = 'Clear'
|
||||
Top = 460
|
||||
Top = 453
|
||||
Width = 23
|
||||
BorderSpacing.Left = 4
|
||||
Color = clBtnFace
|
||||
|
@ -693,7 +694,7 @@ object frmMain: TfrmMain
|
|||
Left = 101
|
||||
Height = 22
|
||||
Hint = 'Delete'
|
||||
Top = 460
|
||||
Top = 453
|
||||
Width = 23
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 4
|
||||
|
@ -745,7 +746,7 @@ object frmMain: TfrmMain
|
|||
Left = 74
|
||||
Height = 22
|
||||
Hint = 'Add'
|
||||
Top = 460
|
||||
Top = 453
|
||||
Width = 23
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 4
|
||||
|
@ -799,9 +800,9 @@ object frmMain: TfrmMain
|
|||
AnchorSideBottom.Control = btnDeleteLocation
|
||||
Cursor = 63
|
||||
Left = 4
|
||||
Height = 438
|
||||
Height = 431
|
||||
Top = 18
|
||||
Width = 208
|
||||
Width = 210
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Around = 4
|
||||
BorderStyle = bsSingle
|
||||
|
@ -816,7 +817,7 @@ object frmMain: TfrmMain
|
|||
item
|
||||
Position = 1
|
||||
Text = 'Name'
|
||||
Width = 129
|
||||
Width = 131
|
||||
end>
|
||||
Header.DefaultHeight = 17
|
||||
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoVisible]
|
||||
|
@ -1024,7 +1025,7 @@ object frmMain: TfrmMain
|
|||
AnchorSideBottom.Control = spChat
|
||||
Left = 224
|
||||
Height = 22
|
||||
Top = 416
|
||||
Top = 413
|
||||
Width = 542
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BevelInner = bvRaised
|
||||
|
@ -1037,7 +1038,7 @@ object frmMain: TfrmMain
|
|||
Left = 10
|
||||
Height = 18
|
||||
Top = 2
|
||||
Width = 101
|
||||
Width = 104
|
||||
Align = alLeft
|
||||
BorderSpacing.Left = 8
|
||||
Caption = 'Chat and Messages'
|
||||
|
@ -1058,7 +1059,7 @@ object frmMain: TfrmMain
|
|||
AnchorSideBottom.Control = pnlBottom
|
||||
Left = 224
|
||||
Height = 109
|
||||
Top = 443
|
||||
Top = 440
|
||||
Width = 542
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BevelOuter = bvNone
|
||||
|
@ -1069,7 +1070,7 @@ object frmMain: TfrmMain
|
|||
object vstChat: TVirtualStringTree
|
||||
Cursor = 63
|
||||
Left = 0
|
||||
Height = 88
|
||||
Height = 90
|
||||
Top = 0
|
||||
Width = 542
|
||||
Align = alClient
|
||||
|
@ -1107,8 +1108,8 @@ object frmMain: TfrmMain
|
|||
end
|
||||
object edChat: TEdit
|
||||
Left = 0
|
||||
Height = 21
|
||||
Top = 88
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 542
|
||||
Align = alBottom
|
||||
OnKeyPress = edChatKeyPress
|
||||
|
@ -1123,7 +1124,7 @@ object frmMain: TfrmMain
|
|||
Cursor = crVSplit
|
||||
Left = 224
|
||||
Height = 5
|
||||
Top = 438
|
||||
Top = 435
|
||||
Width = 542
|
||||
Align = alNone
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
|
@ -1140,7 +1141,7 @@ object frmMain: TfrmMain
|
|||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = pnlChatHeader
|
||||
Left = 224
|
||||
Height = 392
|
||||
Height = 389
|
||||
Top = 24
|
||||
Width = 542
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
|
|
|
@ -826,7 +826,18 @@ begin
|
|||
|
||||
FLocationsFile := FAppDir + 'Locations.dat';
|
||||
vstLocations.NodeDataSize := SizeOf(TLocationInfo);
|
||||
if FileExists(FLocationsFile) then vstLocations.LoadFromFile(FLocationsFile);
|
||||
try
|
||||
if FileExists(FLocationsFile) then
|
||||
vstLocations.LoadFromFile(FLocationsFile);
|
||||
except
|
||||
on E: EVirtualTreeError do
|
||||
begin
|
||||
MessageDlg('Warning', 'The Locations could not be loaded. Most likely it is an' + LineEnding +
|
||||
'outdated version or the file is damaged.' + LineEnding + LineEnding +
|
||||
'A backup will be made as "Locations.bak".', mtWarning, [mbOK], 0);
|
||||
RenameFile(FLocationsFile, FAppDir + 'Locations.bak');
|
||||
end;
|
||||
end;
|
||||
|
||||
RegisterPacketHandler($0C, TPacketHandler.Create(0, @OnClientHandlingPacket));
|
||||
|
||||
|
@ -897,7 +908,22 @@ end;
|
|||
procedure TfrmMain.cbRandomPresetChange(Sender: TObject);
|
||||
begin
|
||||
if cbRandomPreset.ItemIndex > -1 then
|
||||
begin
|
||||
try
|
||||
vdtRandom.LoadFromFile(FRandomPresetLocation + cbRandomPreset.Text + '.dat');
|
||||
except
|
||||
on EVirtualTreeError do
|
||||
begin
|
||||
if MessageDlg('Error', 'The profile could not be loaded. Most likely it is an' + LineEnding +
|
||||
'outdated version or the file is damaged.' + LineEnding + LineEnding +
|
||||
'Should this profile be deleted now?', mtError, [mbYes, mbNo], 0) = mrYes then
|
||||
begin
|
||||
DeleteFile(FRandomPresetLocation + cbRandomPreset.Text + '.dat');
|
||||
cbRandomPreset.Items.Delete(cbRandomPreset.ItemIndex);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMain.btnAddRandomClick(Sender: TObject);
|
||||
|
|
Loading…
Reference in New Issue