diff --git a/applications/json_packager/jsonpackage.lpi b/applications/json_packager/jsonpackage.lpi
index bbb064b87..e69b4680e 100644
--- a/applications/json_packager/jsonpackage.lpi
+++ b/applications/json_packager/jsonpackage.lpi
@@ -24,7 +24,7 @@
-
+
diff --git a/applications/json_packager/jsonpackage.lps b/applications/json_packager/jsonpackage.lps
index 06a10f39b..04a00886e 100644
--- a/applications/json_packager/jsonpackage.lps
+++ b/applications/json_packager/jsonpackage.lps
@@ -20,11 +20,12 @@
-
-
+
+
-
-
+
+
+
@@ -103,9 +104,6 @@
-
-
-
@@ -119,124 +117,124 @@
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/applications/json_packager/jsonpackage.res b/applications/json_packager/jsonpackage.res
index 2b1e7549a..44d6b95fb 100644
Binary files a/applications/json_packager/jsonpackage.res and b/applications/json_packager/jsonpackage.res differ
diff --git a/applications/json_packager/umain.pas b/applications/json_packager/umain.pas
index b7d39e816..24930c99d 100644
--- a/applications/json_packager/umain.pas
+++ b/applications/json_packager/umain.pas
@@ -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,20 +463,26 @@ 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;
- editName.Text := JSONPackage.Package.Name;
- editDownloadURL.Text := JSONPackage.Package.DownloadURL;
- cbForceUpdate.Checked := JSONPackage.Package.ForceUpdate;
-
- stringPackageFiles.RowCount := JSONPackage.PackageFiles.Count + 1;
- for i := 0 to JSONPackage.PackageFiles.Count - 1 do
- begin
- stringPackageFiles.Cells[0, i + 1] := JSONPackage.PackageFiles.Items[i].Name;
- stringPackageFiles.Cells[1, i + 1] := JSONPackage.PackageFiles.Items[i].Version;
+ stringPackageFiles.RowCount := JSONPackage.PackageFiles.Count + 1;
+ for i := 0 to JSONPackage.PackageFiles.Count - 1 do
+ 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;
-
- JSONPackage.Free;
end;
end;
@@ -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;