![]() |
XE5 / iOS / Einstellungen auslesen: ok bei iPhone4, freeze bei iPhone5
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} |
AW: XE5 / iOS / Einstellungen auslesen: ok bei iPhone4, freeze bei iPhone5
Hi.
Make sure the returned preference-string is not nil
Delphi-Quellcode:
function GetPreferenceItem( const APreference : string ) : string;
var lDefaults : NSUserDefaults; val : NSString; begin lDefaults := TNSUserDefaults.Wrap( TNSUserDefaults.OCClass.standardUserDefaults ); try val := lDefaults.stringForKey( NSStr(APreference) ); if val <> nil then result := UTF8ToString(val.UTF8String); except on e : exception do result := ''; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz