0.1.10.0: Exception handling for Load + Save (minesadorada)

Error check for duplicate lpk entries (minesadorada)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5408 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
gbamber
2016-12-04 18:05:35 +00:00
parent c0c7cae9ae
commit 1e944a1c58
4 changed files with 73 additions and 65 deletions

View File

@ -24,7 +24,7 @@
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="1"/>
<RevisionNr Value="9"/>
<RevisionNr Value="10"/>
<StringTable Comments="Buld configured for Win Linux and Darwin" FileDescription="An editor for OnlinePackageManager update JSON files" InternalName="jsoneditor" LegalCopyright="(c)2016 usernames lainz and minesadorada @ forum.lazarus.freepascal.org" LegalTrademarks="GPL code" OriginalFilename="jsoneditor" ProductName="Lazarus and Freepascal" ProductVersion="1.x and 3.x"/>
</VersionInfo>
<BuildModes Count="5">

View File

@ -20,11 +20,12 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="790"/>
<CursorPos X="23" Y="811"/>
<TopLine Value="13"/>
<CursorPos X="62" Y="28"/>
<UsageCount Value="56"/>
<Bookmarks Count="1">
<Item0 Y="465" ID="1"/>
<Bookmarks Count="2">
<Item0 Y="468" ID="1"/>
<Item1 X="8" Y="737"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -103,9 +104,6 @@
<TopLine Value="10428"/>
<CursorPos X="29" Y="10452"/>
<UsageCount Value="11"/>
<Bookmarks Count="1">
<Item0 X="86" Y="1718"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -119,124 +117,124 @@
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="umain.pas"/>
<Caret Line="748" Column="47" TopLine="747"/>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="1395" Column="21" TopLine="1371"/>
</Position1>
<Position2>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="456" Column="14" TopLine="456"/>
<Caret Line="745" Column="27" TopLine="709"/>
</Position2>
<Position3>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="1721" Column="21" TopLine="1694"/>
<Caret Line="114" Column="3" TopLine="76"/>
</Position3>
<Position4>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="1395" Column="21" TopLine="1371"/>
<Filename Value="umain.pas"/>
<Caret Line="155" TopLine="134"/>
</Position4>
<Position5>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="745" Column="27" TopLine="709"/>
<Filename Value="umain.pas"/>
<Caret Line="308" Column="3" TopLine="306"/>
</Position5>
<Position6>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="114" Column="3" TopLine="76"/>
<Filename Value="umain.pas"/>
<Caret Line="796" Column="19" TopLine="766"/>
</Position6>
<Position7>
<Filename Value="umain.pas"/>
<Caret Line="155" TopLine="134"/>
<Caret Line="46" Column="40" TopLine="31"/>
</Position7>
<Position8>
<Filename Value="umain.pas"/>
<Caret Line="308" Column="3" TopLine="306"/>
<Filename Value="C:\NewPascalDarwin\fpc\rtl\objpas\classes\classesh.inc"/>
<Caret Line="498" Column="37" TopLine="465"/>
</Position8>
<Position9>
<Filename Value="umain.pas"/>
<Caret Line="796" Column="19" TopLine="766"/>
<Caret Line="450" Column="47" TopLine="426"/>
</Position9>
<Position10>
<Filename Value="umain.pas"/>
<Caret Line="46" Column="40" TopLine="31"/>
<Caret Line="298" Column="27" TopLine="285"/>
</Position10>
<Position11>
<Filename Value="C:\NewPascalDarwin\fpc\rtl\objpas\classes\classesh.inc"/>
<Caret Line="498" Column="37" TopLine="465"/>
<Filename Value="umain.pas"/>
<Caret Line="313" Column="46" TopLine="290"/>
</Position11>
<Position12>
<Filename Value="umain.pas"/>
<Caret Line="450" Column="47" TopLine="426"/>
<Caret Line="316" Column="65" TopLine="293"/>
</Position12>
<Position13>
<Filename Value="umain.pas"/>
<Caret Line="298" Column="27" TopLine="285"/>
<Caret Line="313" Column="46" TopLine="289"/>
</Position13>
<Position14>
<Filename Value="umain.pas"/>
<Caret Line="313" Column="46" TopLine="290"/>
<Caret Line="320" TopLine="296"/>
</Position14>
<Position15>
<Filename Value="umain.pas"/>
<Caret Line="316" Column="65" TopLine="293"/>
<Caret Line="310" Column="29" TopLine="295"/>
</Position15>
<Position16>
<Filename Value="umain.pas"/>
<Caret Line="313" Column="46" TopLine="289"/>
<Caret Line="672" Column="56" TopLine="635"/>
</Position16>
<Position17>
<Filename Value="umain.pas"/>
<Caret Line="320" TopLine="296"/>
<Caret Line="810" Column="41" TopLine="787"/>
</Position17>
<Position18>
<Filename Value="umain.pas"/>
<Caret Line="310" Column="29" TopLine="295"/>
<Caret Line="812" Column="36" TopLine="786"/>
</Position18>
<Position19>
<Filename Value="umain.pas"/>
<Caret Line="672" Column="56" TopLine="635"/>
<Caret Line="813" Column="5" TopLine="790"/>
</Position19>
<Position20>
<Filename Value="umain.pas"/>
<Caret Line="810" Column="41" TopLine="787"/>
<Caret Line="811" TopLine="787"/>
</Position20>
<Position21>
<Filename Value="umain.pas"/>
<Caret Line="812" Column="36" TopLine="786"/>
<Caret Line="814" Column="5" TopLine="787"/>
</Position21>
<Position22>
<Filename Value="umain.pas"/>
<Caret Line="813" Column="5" TopLine="790"/>
<Caret Line="812" Column="24" TopLine="784"/>
</Position22>
<Position23>
<Filename Value="umain.pas"/>
<Caret Line="811" TopLine="787"/>
<Caret Line="811" Column="11" TopLine="788"/>
</Position23>
<Position24>
<Filename Value="umain.pas"/>
<Caret Line="814" Column="5" TopLine="787"/>
<Caret Line="813" Column="6" TopLine="789"/>
</Position24>
<Position25>
<Filename Value="umain.pas"/>
<Caret Line="812" Column="24" TopLine="784"/>
<Caret Line="489" TopLine="481"/>
</Position25>
<Position26>
<Filename Value="umain.pas"/>
<Caret Line="811" Column="11" TopLine="788"/>
<Caret Line="819" TopLine="789"/>
</Position26>
<Position27>
<Filename Value="umain.pas"/>
<Caret Line="813" Column="6" TopLine="789"/>
<Caret Line="813" TopLine="789"/>
</Position27>
<Position28>
<Filename Value="umain.pas"/>
<Caret Line="489" TopLine="481"/>
<Caret Line="79" Column="26" TopLine="50"/>
</Position28>
<Position29>
<Filename Value="umain.pas"/>
<Caret Line="819" TopLine="789"/>
<Caret Line="812" TopLine="795"/>
</Position29>
<Position30>
<Filename Value="umain.pas"/>
<Caret Line="813" TopLine="789"/>
<Caret Line="735" Column="33" TopLine="720"/>
</Position30>
</JumpHistory>
</ProjectSession>

View File

@ -22,9 +22,11 @@ unit umain;
Version History
===============
0.0.0.0 Original code by lainz
..to 0.1.6.0 Refactored and updated by minesadorada
0.1.7.0: Bugfix by lainz
0.1.8.0: Config file change by minesadorada
..to 0.1.6.0 Refactored and updated (minesadorada)
0.1.7.0: Bugfix (lainz)
0.1.8.0: Config file change (minesadorada)
0.1.10.0: Exception handling for Load + Save (minesadorada)
Error check for duplicate lpk entries (minesadorada)
}
{$mode objfpc}{$H+}
@ -76,7 +78,7 @@ type
public
constructor Create;
destructor Destroy; override;
procedure LoadFromFile(AFileName: string);
function LoadFromFile(AFileName: string):Boolean;
function SaveToFile(AFileName: string): boolean;
published
property Package: TPackageData read FPackage write FPackage;
@ -461,8 +463,9 @@ begin
sJSONFilePath := FileOpen1.Dialog.Filename;
CFG.WriteString('Options', 'LastLoadedJSONPath', ExtractFileDir(sJSONFilePath));
JSONPackage := TPackage.Create;
JSONPackage.LoadFromFile(FileOpen1.Dialog.FileName);
TRY
if JSONPackage.LoadFromFile(FileOpen1.Dialog.FileName) then
begin
editName.Text := JSONPackage.Package.Name;
editDownloadURL.Text := JSONPackage.Package.DownloadURL;
cbForceUpdate.Checked := JSONPackage.Package.ForceUpdate;
@ -473,9 +476,14 @@ begin
stringPackageFiles.Cells[0, i + 1] := JSONPackage.PackageFiles.Items[i].Name;
stringPackageFiles.Cells[1, i + 1] := JSONPackage.PackageFiles.Items[i].Version;
end;
end
else
ShowMessageFmt('There was a problem loading "%s" - is it corrupted or in the wrong format?',
[ExtractFilename(FileOpen1.Dialog.FileName)]);
finally
JSONPackage.Free;
end;
end;
end;
procedure TfrmMain.mnu_fileNewClick(Sender: TObject);
@ -724,7 +732,9 @@ begin
end
else
if JSONPackage.SaveToFile(sJSONFilePath) then
ShowMessage(sJSONFilePath + rsSavedOK);
ShowMessage(sJSONFilePath + rsSavedOK)
else
ShowMessage(rsSaveUnsucces);
bDirty := False;
finally
JSONPackage.Free;
@ -795,11 +805,12 @@ begin
inherited Destroy;
end;
procedure TPackage.LoadFromFile(AFileName: string);
Function TPackage.LoadFromFile(AFileName: string):Boolean;
var
DeStreamer: TJSONDeStreamer;
s: TStringList;
begin
Result:=TRUE;
s := TStringList.Create;
TRY
s.LoadFromFile(AFileName);
@ -807,8 +818,7 @@ begin
TRY
DeStreamer.JSONToObject(s.Text, Self);
EXCEPT
On E:Exception do
ShowMessage('The json file appears to be corrupted or in the wrong format');
On E:Exception do Result:=FALSE;
end;
Finally
DeStreamer.Free;
@ -831,7 +841,7 @@ begin
s.SaveToFile(AFileName);
Result := True;
except
ShowMessage(rsSaveUnsucces);
end;
finally
Streamer.Free;