2014-01-22 12 views
6

Ich muss einige benutzerdefinierte, statische Daten in meiner mobilen Anwendung Delphi XE5 FireMonkey (Android) speichern. Ich habe eine "RC_DATA" -Lösung im Internet gesehen, aber sie ist Windows-spezifisch. Ich brauche eine plattformübergreifende Lösung. HierDelphi FireMonkey speichert Daten in der Anwendung

ist die RC_DATA Lösung, die ich entdeckt: http://delphidabbler.com/articles?article=2

Ein Kommentar im Codebeispiel lautet: // Ressourcentyp - RT_RCDATA (ab Windows-Einheit)

ich von diesem Kommentar Schluss gekommen, dass der Code innerhalb der Windows-Einheit war Windows-spezifisch. Ich entschuldige mich, wenn das nicht der Fall ist.

Da Chris sagte, dass es in der Tat Cross-Plattform ist, werde ich es ausprobieren. Danke Chris.

In Bezug auf eine Komponente oder Bibliothek zu fragen, habe ich meine Frage gelesen und neu gelesen und ich sehe es einfach nicht. Ich denke, eine 'Lösung' könnte möglicherweise eine Komponente oder Bibliothek enthalten, aber das war mir nie in den Sinn gekommen. Nochmals, ich entschuldige mich, wenn ich etwas falsch gemacht habe.

Farewell

+6

Urgh, warum in aller Welt wurde das auf Eis gelegt? Ich war gerade dabei, eine Antwort zu verfassen und zu erklären, dass das, was das OP als "RC_DATA" -Lösung bezeichnet, tatsächlich nicht Windows-spezifisch ist und tatsächlich die "plattformübergreifende" Lösung von Delphi ist. Die Frage lautet eindeutig nicht, Leute zu bitten, ein Tool, eine Bibliothek oder eine geliebte Offsite-Ressource zu empfehlen oder zu finden, und ich bin überrascht, dass der eine Delphi-Entwickler unter den fünf Schließern dachte, es sei. –

+1

@ChrisRolliston gerade wieder die Frage ... –

+0

@AndreasNiedermair - Prost –

Antwort

8

Weit davon entfernt, was Sie nennen das ‚‚RC_DATA‘Lösung‘ Windows-spezifische sein, es ist eigentlich die gerade nach vorne Cross-Plattform-Weg Delphi bietet. Was Sie tun müssen, ist das Hinzufügen der Dateien zum Projekt über Projekt | Ressourcen und Bilder ...; Da die anderen Ressourcentypen Windows-spezifisch sind, bleiben Sie einfach bei RCDATA für jeden. Dann laden möchten, verwenden TResourceStream wie in einer VCL-Anwendung getan haben könnte (RT_RCDATA in System.Types erklärt):

procedure LoadStringsFromRes(Strings: TStrings; const ResName: string); 
var 
    Stream: TResourceStream; 
begin 
    Stream := TResourceStream.Create(HInstance, ResName, RT_RCDATA); 
    try 
    Strings.LoadFromStream(Stream); 
    finally 
    Stream.Free; 
    end; 
end; 

Auch, wenn aus irgendeinem Grund Sie überprüfen möchten, ob eine bestimmte Ressource, bevor Sie besteht laden Es implementiert die System Einheit die Windows API FindResource Funktion für Nicht-Windows-Plattformen.

Eine Alternative zu eingebetteten Ressourcen ist die Verwendung von Project | Deployment zum Hinzufügen von Dateien zum Anwendungspaket (OS X und iOS) oder APK (Android). Während dies als eine "Plattform-native" Art der Ausführung von Dingen betrachtet werden kann, ist der entsprechende "Remote-Pfad" plattformspezifisch ... und ehrlich gesagt, wenn eine Person so plattform-nativ ist, können sie nicht mit eingebetteten Ressourcen umgehen , dann würden sie in erster Linie sein mit FMX nicht ...


Update: in Bezug auf den Artikel, der nun in Verbindung gebracht wurde, es zeigt, wie eine RES-Datei manuell zu schreiben, was isn Was eine Person normalerweise tun würde - wenn Sie nicht den kleinen Ressourcenmanager der IDE verwenden, dann ist der normale Weg, ein RC-Skript zu erstellen und es mit dem Borland- oder Microsoft-Ressourcencompiler zu kompilieren.

Verwandte Themen