Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#1

Eleganter Ersatz für TList und Objekte unter FMX-Platformen?

  Alt 30. Dez 2015, 23:08
Bin gerade dabei eine meiner Anwendungen nicht nur für Windows, sondern auch für MAC, Android und IOS bereit zu stellen. Allerdings gehe ich mal versuchsweise einen anderen Weg als sonst: Nicht der volle Umschwung zu FMX mit einer Vollkonvertierung, sondern (zumindest eine Zeit lang) noch die Windows-Version als VCL-Projekt weiterzuführen, aber mit einer gemeinsamen Source-Code Basis auch die MAC-, Android und IOS-Version zu bestücken.

MAC-Version ist als Beta schon fertig (bei Interesse siehe hier).

Was mir leider erst jetzt bei der Bearbeitung der Android-Version (siehe anlg. Screenshot vom Device) wieder einfiel, ist die ARC-Thematik und die Verwendung von TList mit Objekten.

Stevie hatte hier schon mal etwas ausgeführt: http://www.delphipraxis.net/1266711-post5.html

Meine Frage ist nun: Wie könnte ein eleganter Weg aussehen, um ein TTermin-Objekt, das bisher in einer TList-Liste verwaltet wird, durch eine andere Lösung zu ersetzen, die gleichwohl auf allen Plattformen (also incl. VCL-Windows) verwendet werden kann

UND

möglichst so eingeführt wird, dass ich an allen Stellen im Source-Code keine Änderungen vornehmen muss (denn es wären viel tausend Stellen)?

Bisher verwende ich das Object und die Liste unter Windows (und MAC) ungefähr so:

Delphi-Quellcode:
TTermin = class (TObject)
    Deleted: Integer; // wird nicht in Datei gespeichert; <> 0 ist gelöscht
    Markiert: Boolean; // ab Version 5 (wird nicht in Datei gespeichert)

{1} ID : String;
    DTyp : Integer; {0 = Termin, 1 = Aufgabe }
    Tag: String;
    .... usw.

Im Source-Code wird das Objekt halt oft in dieser Art verwendet:

Delphi-Quellcode:
procedure Tfrm_Main.Fill2WeeksList (day, month, year: Word);
var
  Y, D, F, P, xl, L, M: Integer;
  Tag, RepeatDay, S, sNew: String;
  tm: tTermin;
begin
  for L := 1 to TerminList.Count-1 do begin
    try
      tm := TTermin (TerminList[L]);
      if tm.tag = Today // usw.
Oder so beim Erzeugen des Objects:

Delphi-Quellcode:
var
  TerminList: TList;

begin
  tm := tTermin.Create;
  TerminList.Add (tm);
  /// weiter mit tm arbeiten
Jemand einen zündende Idee?
Miniaturansicht angehängter Grafiken
timo-android.jpg  
  Mit Zitat antworten Zitat