AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android: Grenzen objektorientierter Programmierung?
Thema durchsuchen
Ansicht
Themen-Optionen

Android: Grenzen objektorientierter Programmierung?

Ein Thema von Klaus Budmiger · begonnen am 26. Jul 2014 · letzter Beitrag vom 28. Jul 2014
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 26. Jul 2014, 17:42
Auf Android greift ARC. Und da eine TList nicht typisiert ist und nur Pointer speichert, sorgt sie nicht dafür, dass deine TMyString Objekte am Leben bleiben. D.h. beim Verlassen der Methode bzw beim erneuten Zuweisen auf die MyString Variable, wo du die TList befüllst, sind sie schon wieder freigegeben worden. Demnäch stehen in der Liste bloß noch Pointer auf nicht mehr gültigen Speicher.

Um das zu lösen, würde ich für beide Plattformen vorschlagen, eine TList<TMyString> (oder auch direkt TList<string> oder TStringList) zu benutzen.
Hier auch drauf achten, dass du auf Windows keine Memoryleaks verursachst und deine TMyString Instanzen wieder richtig frei gibst, wenn die liste freigegeben wird (würde gehen, wenn du TObjectList<TMyString> benutzt)

Die findest du in der Unit System.Generics.Collections.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Klaus Budmiger

Registriert seit: 6. Mär 2008
7 Beiträge
 
Delphi XE6 Professional
 
#2

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 27. Jul 2014, 21:16
Herzlichen Dank für die Antwort. Das macht Sinn. Ich werde es so umsetzen.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 28. Jul 2014, 05:03
Eine Verständnisfrage: ARC = Automatic Reference Counting. Bedeutet das in der Konsequenz, das ich mir um die Freigabe von Objekten keinen Kopf mehr machen muss?

Und wenn das so ist, warum ist das dann nur bei Android so?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.966 Beiträge
 
Delphi 12 Athens
 
#4

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 28. Jul 2014, 06:17
Weil dort der neue Nextgen-Compiler benutzt wird. Der alte kann das nicht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 28. Jul 2014, 06:42
Also ist die Konsequenz, das Quellcode derzeit nicht zwingend kompatibel ist (wenn man old-style mit Pointern arbeitet).

Ferner deutet 'NextGen' darauf hin, dass das nur ein vorübergehender Zustand ist, da man bei 'next generation' davon ausgehen kann, das ein derartiger Compiler bzw. eine Spracherweiterung/veränderung auch für Windows umgesetzt wird, oder will man bei Emba etwa zweigleisig fahren?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 28. Jul 2014, 06:52
Zitat:
Also ist die Konsequenz, das Quellcode derzeit nicht zwingend kompatibel ist (wenn man old-style mit Pointern arbeitet).
Bei etwas unglücklicher Programmierung kann das passieren. "sauberer" Code stellt aber kein Problem dar.

Zitat:
Ferner deutet 'NextGen' darauf hin, dass das nur ein vorübergehender Zustand ist, da man bei 'next generation' davon ausgehen kann, das ein derartiger Compiler bzw. eine Spracherweiterung/veränderung auch für Windows umgesetzt wird, oder will man bei Emba etwa zweigleisig fahren?
Es ist geplant, dass der neue auf LLVM basierende Compiler auch für Win32/Win64 zum Einsatz kommt. Bisher unterstützt er aber nur ARM für iOS und Android.
Markus Kinzler
  Mit Zitat antworten Zitat
Klaus Budmiger

Registriert seit: 6. Mär 2008
7 Beiträge
 
Delphi XE6 Professional
 
#7

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 28. Jul 2014, 08:42
Stevie, Dein Rat war die Lösung. Danke!!
Falls es jemanden interessiert wie der korrekte Code aussieht, hier lege ich ihn bei.
Angehängte Dateien
Dateityp: pas Unit1.pas (1,3 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 28. Jul 2014, 06:56
Also ist die Konsequenz, das Quellcode derzeit nicht zwingend kompatibel ist (wenn man old-style mit Pointern arbeitet).

Ferner deutet 'NextGen' darauf hin, dass das nur ein vorübergehender Zustand ist, da man bei 'next generation' davon ausgehen kann, das ein derartiger Compiler bzw. eine Spracherweiterung/veränderung auch für Windows umgesetzt wird, oder will man bei Emba etwa zweigleisig fahren?
Langfristig ist evtl ARC auf Windows und OSX auch ein Thema aber nicht zu erwarten in nächster Zeit.
Das liegt unter anderem daran, dass die VCL bzw TComponent Architektur an sich nicht wirklich ARC freundlich ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 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