Вот пример кода для вашего случая
Var Source : String;
JSON : TJSONObject;
JSONValue : TJSONValue;
JSONArray : TJSONArray;
I : Integer;
begin
Source:='{"data":["val1", "val2", "val3"]}';
JSON:=TJSONObject(TJSONObject.ParseJSONValue(Source));
if Not Assigned(JSON) then
Exit;
if JSON.TryGetValue('data',JSONValue) then
if TJSONObject(JSONValue).ClassName.Equals('TJSONArray') then
begin
JSONArray:=TJSONArray(JSONValue);
if Assigned(JSONArray) then
for I := 0 to JSONArray.Count-1 do
Memo.Lines.Add(JSONArray.Items[I].Value);
end;
end;
Для проверок неудачного парсинга есть такие инструменты как "if Assigned(JSON) then" и "JSON.TryGetValue('data',JSONValue)"
Так в Гугле все легко ищется
как зарегиться
http://www.homebusiness.ru/inet/327.htm
как опубликовать приложние
http://www.homebusiness.ru/inet/328.htm
кстати... для публикации приложения надо 25$ отстегнуть
Нужно использовать myObject.Release, а не Free.
Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь.
Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.
У меня есть смутное подозрение, что код сервиса почему-то не обновляется. Т.е ваш сервис остается самой первой версии, какой был установлен. Ничем другим объяснить такое поведение я не могу
Попробуйте кроме сохранения в ини писать в лог, что ли...