AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Mühsame Fehlerkorrekturen unter Android 64Bit
Thema durchsuchen
Ansicht
Themen-Optionen

Mühsame Fehlerkorrekturen unter Android 64Bit

Ein Thema von Klapauzius · begonnen am 27. Nov 2019 · letzter Beitrag vom 5. Dez 2019
Antwort Antwort
Klapauzius

Registriert seit: 8. Feb 2018
Ort: Region Bern (Schweiz)
74 Beiträge
 
Delphi 12 Athens
 
#1

Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 27. Nov 2019, 10:29
Bei zwei meiner selbst programmierten Komponenten treten unter Android 64Bit unerklärliche Fehler auf. Während unter 32Bit alles problemlos kompiliert tauchten unzählige Fehler dieser Art auf: "Deklaration... unterscheidet sich von vorheriger Deklaration"
Angemeckert wird zum Beispiel:

Delphi-Quellcode:
//Klassendefinition:
 public
    function Read(var Buffer; Count: Longint): Longint; override;

//die eigentliche Funktion

   function TMyComponentStream.Read(var Buffer; Count: Longint): Longint;
Auch nach ca 100 maligem Vergleichen, konnte ich keinen Unterschied feststellen. Da hab ich einfach mal Copy und Paste gemacht und staune, obwohl gar nichts geändert wurde, wird die entsprechende Funktion nun akzeptiert. Die Lösung ist also gefunden, aber bei mehreren Dutzend Funktionen ist dies doch etwas mühsam mit copy and paste die entsprechenden Funktionsdefinitionen zu ändern. Unerklärlicherweise meckert Rio 10.3.3 aber nicht alle Funktionen an, nur einzelne, aber ein Muster kann ich da nicht erkennen.

Infos:
- Die Dateien wurden nie in einem externen Editor geöffnet oder verändert
- Die Dateien wurden ursprünglich in Tokyo erstellt und in Rio 10.3.2 / 10.3.3 übernommen
- Die Klassen wurden ursprünglich mit MMX Code Explorer erstellt
Albert
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 27. Nov 2019, 17:36
function Read(var Buffer; Count: Longint): Longint; override; und wie sieht das in der Basisklasse aus ?

Geändert von Rollo62 (28. Nov 2019 um 12:19 Uhr)
  Mit Zitat antworten Zitat
Klapauzius

Registriert seit: 8. Feb 2018
Ort: Region Bern (Schweiz)
74 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 28. Nov 2019, 10:28
function Read(var Buffer; Count: Longint): Longint; override; und wie siet das in der Basisklasse aus ?
Das spielt hier definitiv keine Rolle. Es war nur Zufall, dass ich hier eine überladene Funktion als Beispiel aufgeführt habe. Der Fehler tritt bei unterschiedlichsten Funktionen und Prozeduren auf, unabhängig ob überladen, abgeleitet, privat oder public. Es ist wirklich (mindestens von mir) kein Schema zu erkennen.

Zusätzliche Fehlerkorrekturen, die ich nicht erwartet hätte:
Rio 3.3 überschreibt mir bei diesem Projekt die Einstellungen der Bereitstellung. Dokumente, die ich unter 2.2 unter Android 32Bit manuell eingefügt habe, sind in 3.3 plötzlich nicht mehr vorhanden, Standardeinträge von Delphi, die ich deaktiviert hatte, sind wieder aktiviert. Dass in 64Bit Android Standardwerte eingetragen werden ist mir klar, aber warum auch in 32Bit?
Albert
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 28. Nov 2019, 13:50
Ich denke das Beste ist für Android-64 ein komplett neues, leeres Projekt anzulegen.
Damit werden alle Einträge von Delphi neu erzeugt, so wie es der Schöpfer gedacht hat.
Leider muss man dann alle Einstellungen neu eintragen, aber dafür weiss man wo man steht.

Dem Upgrade-Prozess der IDE vertraue ich nur bedingt, was Berechtigungen, etc. betrifft.
Insbesondere wenn neue Build-Ziele hinzugekommen sind (64-Bit).
  Mit Zitat antworten Zitat
Klapauzius

Registriert seit: 8. Feb 2018
Ort: Region Bern (Schweiz)
74 Beiträge
 
Delphi 12 Athens
 
#5

AW: Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 28. Nov 2019, 14:32
Ich denke das Beste ist für Android-64 ein komplett neues, leeres Projekt anzulegen.
.... (64-Bit).
Dieser Vorschlag ist für mich leider nicht wirklich realisierbar. Delphi ist ein Multiplattformentwicklungswerkzeug. Ich entwickle nicht nur für Android. D.h. in einem Projekt sind mehrere Plattformen integriert. Muss ich nun mit einem leeren Projekt anfangen, alle Dateien mühsam reinkopieren und für jede Plattform die Bereitstellungseinstellungen neu eingeben, gehen da Stunden an Arbeit drauf.

Das ändert aber nichts daran, dass von mir erstellte Komponenten, mit völlig identischem Code erstmals unter Android 64 nicht immer kompilierbar sind (wohl aber unter Windows, MAC, iOS und Android32), erst das Ersetzen der vom Compiler angemeckerten Funktions- und Methodendefinitionen (mit identischen Werten) ermöglicht mir das Kompilieren unter Android 64. Um klar zu stellen, nicht eine für mich nachvollziehbare Änderung des Codes wurde beim Ersetzen vorgenommen.

Egal, ich habe mich damit abgefunden. Alles ist ersetzt, meine Komponenten laufen auch unter Android64, die Bereitstellungsdateien des aktuellen Projektes sind wieder geändert und erste Testversionen sind bei den Betatestern im Einsatz. Hat mich einfach ein paar Stunden Zeit gekostet und mein Vertrauen in den Android 64Bit Compiler etwas getrübt.
Albert
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 28. Nov 2019, 14:36
Ich denke das Beste ist für Android-64 ein komplett neues, leeres Projekt anzulegen.
.... (64-Bit).
Dieser Vorschlag ist für mich leider nicht wirklich realisierbar.
Ja ich weine auch jedes Mal wenn ich mal wieder Tabularasa machen Muss.
Aber aus Erfahrung weiis ich das man dann an anderer Stelle viel Arbeit einsparen kann.

Ich versuche mich da bei dein Einstellungen mit OptionSets, und verschiedener anderer Tricks,
aber den großen Wurf habe ich da auch noch nicht gefunden.

Mir persönlich wäre es am liebsten wenn die Options in Delphi meinetwegen simpel per Text-Editor editiert werden könnten, und nicht mit diesem Options-Dialog, wo man nie genau weiss ob er die Änderung vererbt hat, oder nicht.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Mühsame Fehlerkorrekturen unter Android 64Bit

  Alt 5. Dez 2019, 10:55
Ich hatte auch etwas zu kämpfen, bis meine Android-64-Version lief. Hauptproblem war, dass das Andriud-64 SDK und NDK nicht komplett eingerichtet war und teilweise auf falsche Pfade zeigt oder z.B. im Biblithekspfad für Delphi-NDK fehlte der Pfad C:\Users\Public\Documents\Embarcadero\Studio\20.0\ PlatformSDKs\android-ndk-r17b\sources\cxx-stl\gnu-libstdc++\4.9\libs\arm64-v8a; welcher bei Android-32 noch automatisch eingerichtet war.

Und natürlich muss die Bereitstellungssektion wieder gefüllt werden, was den Typ "File" und "ProjectFile" angeht. Da wird nichts übernommen.
Und meist ist es eine gute Idee eine von einem neuen Projekt erzeugte AndroidManifest.template.xml per Copy&Paste zu übernehmen (und Anpassungen wieder dort einzutragen).

Ich habe auch damit gekämpft, dass ich der Meinung war, dass ich der Android 64-Bit-Version die Bibliothek JavaScriptHelper.jar analog zu Android 32 hinzufügen muss. Dann ging aber weder Android 32 noch Android 64, weil die Bibliothek dann zweimal eingebunden war. Dies scheint mir noch ein Fehler in der Delphi-Konfiguration zu sein.
  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 21:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz