AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Geräteübergreifende Anwendung funktioniert nicht wirklich

Geräteübergreifende Anwendung funktioniert nicht wirklich

Ein Thema von renew · begonnen am 8. Sep 2020 · letzter Beitrag vom 8. Sep 2020
Antwort Antwort
Seite 1 von 2  1 2   
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 10:39
Geräteübergreifende Anwendung funktioniert nicht wirklich

ich habe Probleme eine geräteübergreifende Anwendung unter Windows und Android ans laufen zu bekommen. Scheint, als ob die ganzen Komponenten nicht wirklich geräteübergreifend funktioniere,
Windows 64Bit lässt sich erst gar nicht compilieren: "[dcc64 Fehler] E1026 Datei nicht gefunden: 'FMX.Filter.res'"

TListBox:
Ein einfaches
Code:
ListBox1.Items.AddObject('STATIC1', TObject(2));
funktioniert unter Android nicht: "Project xy hat die Exception-Klasse Segmentation fault(11) ausgelöst.". Unter Windows funktioniert es.

Datenbank:
Viele DB-Komponenten getestet. Am "lauffähigsten" war die TSQLConnection + TSQLQuery Komponenten.
Unter Windows gibt es einen Fehler bei "sqlQuery.Open;": "Exception EExternalException in Modul KERNELBASE.dll......"


Kleine Test-Procedure:
Code:
procedure TForm20.TestDB();
var
  sqlConnection: TSQLConnection;
  sqlQuery: TSQLQuery;
  dbPath: string;
  sqlString, debugText : string;
begin
  sqlConnection := TSQLConnection.Create(nil);
  sqlConnection.Params.AddPair('DriverName', 'Sqlite');
  sqlConnection.DriverName := 'Sqlite';
  sqlConnection.LoginPrompt := false;
  dbPath := System.IOUtils.TPath.GetDocumentsPath + PathDelim + 'sqlite_DB.db';
  sqlConnection.Params.AddPair('Database', dbPath);
  sqlConnection.Connected := true;
  // Query
  sqlString := 'Select 1 as id, ''test123'' as test';
  sqlQuery := TSQLQuery.Create(nil);
  sqlQuery.sqlConnection := sqlConnection;
  sqlQuery.sql.Clear;
  sqlQuery.sql.Add(sqlString);

  sqlQuery.Open;
  while Not sqlQuery.EOF do
  begin
    debugText := sqlQuery['test'];
    lst_wohnungen.Items.AddObject(sqlQuery['test'], TObject(Integer(sqlQuery['id'])));
    sqlQuery.next;
  end;
  sqlQuery.Free;
  sqlConnection.Free;
end;

Ist es normal, dass die geräteübergreifenden Anwendungen nicht wirklich funktionieren und öfter Probleme bereiten? Oder ist evtl. mein Rechner/RAD falsch konfiguriert?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 10:44
TListBox:
Ein einfaches
Code:
ListBox1.Items.AddObject('STATIC1', TObject(2));
funktioniert unter Android nicht: "Project xy hat die Exception-Klasse Segmentation fault(11) ausgelöst.". Unter Windows funktioniert es.
TObject(2) ist auch kein gültiges Objekt. Dass da bei deinem Delphi 10.2 unter Android die Speicherverwaltung crasht, ist nicht wirklich eine Überraschung. Mach einfach mal ein richtiges Objekt draus...

Für den Datenbankzugriff würde ich mit dem alten dbExpress erst gar nicht mehr anfangen. Dort die Treiber usw. richtig einzurichten ist ein Graus und daran dürfte auch das Problem liegen. Nimm besser gleich FireDAC.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 10:56
Firedac lässt sich aber nicht unter Android compilieren. Sobald ich eine TFDConnection benutze, bekomme ich den Fehler "[DCC Fataler Fehler] UMain.pas(10): F2613 Unit 'FireDAC.UI.Intf' nicht gefunden.
UMain.pas(10): Unit 'FireDAC.UI.Intf' wird von 'FireDAC.Stan.Option' verwendet"

Bekomme den Fehler auch nicht behoben. Nur deswegen bin ich auf die TSQLConnection etc umgestiegen.

Was brauche ich denn für ein Object für die Listbox?
Wenn ich ein String nehme, bekomme ich den selben Fehler:
Code:
var s:string;
begin
  s := '10';
  ListBox1.Items.AddObject('TEST STATC', TObject(s));

Geändert von renew ( 8. Sep 2020 um 11:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 11:01
Firedac lässt sich aber nicht unter Android compilieren. Sobald ich eine TFDConnection benutze, bekomme ich den Fehler "[DCC Fataler Fehler] UMain.pas(10): F2613 Unit 'FireDAC.UI.Intf' nicht gefunden.
Dann ist bei deiner Installation etwas schief. Bei mir ist die Unit unter 10.2, 10.3 und 10.4 ganz normal vorhanden:

2020-09-08.png

Was brauche ich denn für ein Object für die Listbox?
Eine eigene Klasse mit den Daten, die du an den Eintrag anhängen möchtest?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.212 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 11:05
Hast Du das für FD den passenden FireDAC.Phys.SQLite auf das Datenmodul geworfen ?

Und es könnte sein das auch Uses FireDAC.Phys.SQLiteWrapper.Stat fehlt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.575 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 11:24
Im NextGen (Android/iOS) sind Objekte Referenzgezählt, also reagieren wie IInterface und .Free macht dort garnichts.

Derartige Casts sind dort somit verboten
und wenn du sowas brauchst, dann mußt du ein Data-Objekt drumrum bauen.

Delphi-Quellcode:
type
  TDataObject = class
    Value: string;
    constructor Create(Value: string);
  end;

var s: string;
begin
  s := '10';
  ListBox1.Items.AddObject('TEST STATC', TDataObject.Create(s));




Und ja, unter anderem wegen sowas ist plattformübergreifender Code oft fast unmöglich nicht einfach, denn hier darfst du nicht casten und brauchst Objekte drumrum,
aber drüben fehlt an vielen Stellen eine automatische Speicherverwaltung, oder sowas wie OwnsObjects, und mit Objekten bist'e angearscht, wenn du versuchst die Speicherlecks zu vermeiden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 8. Sep 2020 um 11:27 Uhr)
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 11:31
Firedac lässt sich aber nicht unter Android compilieren. Sobald ich eine TFDConnection benutze, bekomme ich den Fehler "[DCC Fataler Fehler] UMain.pas(10): F2613 Unit 'FireDAC.UI.Intf' nicht gefunden.
Dann ist bei deiner Installation etwas schief. Bei mir ist die Unit unter 10.2, 10.3 und 10.4 ganz normal vorhanden:
Bei mir scheinbar auch, aber werden nicht gefunden (unter Android). Kann ich irgendwo prüfen, welche (include-)Verzeichnisse für die entsprechenden "Zielplattform-Kompilate" gesetzt sind?
Miniaturansicht angehängter Grafiken
fd_ui.png  
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 12:07
Kann ich irgendwo prüfen, welche (include-)Verzeichnisse für die entsprechenden "Zielplattform-Kompilate" gesetzt sind?
Du kannst mit dem Process Monitor nachschauen wo nach der Datei gesucht wird. Einfach Filter auf "Path" "contains" "FireDAC.UI.Intf.dcu" setzen, dann wirst du sehen welche Pfade verwendet werden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 14:10
Danke euch. Habe zu Testzwecken nun mal die 10.4 Community Edition runtergeladen.
Funktioniert einwandfrei. Werd ich wohl eine neue VM aufsetzen müssen.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.553 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Geräteübergreifende Anwendung funktioniert nicht wirklich

  Alt 8. Sep 2020, 14:56
Danke euch. Habe zu Testzwecken nun mal die 10.4 Community Edition runtergeladen.
Funktioniert einwandfrei. Werd ich wohl eine neue VM aufsetzen müssen.
Jetzt dachte ich schon da gäbe es eine Neuheit...aber scheinbar ist die Community Editon immer noch nicht weiter als 10.3.3. Habe es extra ausprobiert.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 22:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf