Einzelnen Beitrag anzeigen

moe120

Registriert seit: 1. Okt 2012
Ort: Radeberg
34 Beiträge
 
Delphi XE6 Enterprise
 
#1

XE5 / iOS / Einstellungen auslesen: ok bei iPhone4, freeze bei iPhone5

  Alt 21. Nov 2013, 15:58
Hallo,

ich lese in meiner App beim Starten zuvor gespeicherte Einstellungen (z.B. Serveradresse, Nutzername etc.) aus. Das klappt beim iPhone4 wunderbar und sogar im Simulator (wo der lokale Speicher für diese Werte jedoch ständig geleert wird), nicht jedoch beim iPhone5. Wäre über jeden Denkanstoss oder Alternativen (gern auch mit entsprechendem Code) dankbar.

hier der Code zum Auslesen (die doppelte Funktionsverschachtelung hab ich gemacht weil ich bei Embarcadero gelesen hab, dass ein try-catch bei iphones/ARM CPU's nur richtig funktioniert wenn nur EINE Funktion/Prozedur hinter Try steht, hat aber leider nichts gebracht, in das except läuft er gar nicht erst rein sondern freezt direkt)

Delphi-Quellcode:
{$IFDEF IOS}
function Read_string_setting(name: String): String;
var
  lDefaults: NSUserDefaults;
begin
  try
  lDefaults:= TNSUserDefaults.Wrap(TNSUserDefaults.OCClass.standardUserDefaults);
  Result:= UTF8ToString(lDefaults.stringForKey(NSStr(name)).UTF8String);
  except
  Result:= '';
  end;
end;
{$ENDIF}


procedure proc_read_server_address;
begin
I_server_Address:= Read_string_setting('server_address');
end;


function do_read_settings: Boolean;
begin

  //--read server_address
  Form2.Progressbar1.Value:= 10; Application.ProcessMessages; Sleep(50);
  try proc_read_server_address; // <- freeze hier bei iPhone5, ok bei iPhone4
  except I_server_Address:= ''; end;

  [...]

end;

vllt. seh ich ja auch den Wald vor lauter Bäumen nicht. Hatte erst den Debug-Schalter IOS im Verdacht aber das wär ja Quatsch, weil der ja nur zur Compilierzeit von Bedeutung ist.

Ich hab auch schon eine root.plist mit all denn "Variablen"-namen die ich abfragen/speichern möchte erzeugt und in Bereitstellung reingehängt aber ohne Ergebnis. (Beim iPhone4 brauch ich die gar nicht erst um mit dieser Funktion Werte auslesen zu können)


hier noch die Funktion zum Speichern der Settings / Aufruf analog:
Delphi-Quellcode:
{$IFDEF IOS}
function Save_string_setting(name: String; value: String): Boolean;
var
  lDefaults: NSUserDefaults;
begin
  try
  lDefaults := TNSUserDefaults.Wrap(TNSUserDefaults.OCClass.standardUserDefaults);
  lDefaults.setObject((NSStr(value) as ILocalObject).GetObjectID,
                       NSStr(name));
  Result:= true;
  except
  Result:= false;
  end;
end;
{$ENDIF}
  Mit Zitat antworten Zitat