Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Firemonkey Frame Fehler (Android) (https://www.delphipraxis.net/181082-firemonkey-frame-fehler-android.html)

ChristianG 14. Jul 2014 11:10

Firemonkey Frame Fehler (Android)
 
Guten Tag Delphianer,
in meiner Android App habe ich ein Frame hinzugefügt.Als ich das Programm unter Win32 compelliert habe lief alles wunderbar. Jetzt habe ich das Programm unter Android compelliert und es gab 1044 Fehler. Es gab auch keine konkrete Fehlermeldung, an der ich mich orientieren könnte.
Delphi-Quellcode:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
  FMX.Edit;

type
  TFrameTicket = class(TFrame)
    SpinBox1: TSpinBox;
    lblName: TLabel;
    lblCategory: TLabel;
    lblPreis: TLabel;
  private
    FAnzahl: integer;
    FID: integer;
    FName: string;
    FCategory: string;
    FPreis: Currency;
    procedure SetName(const Value: string);
    procedure SetPreis(const Value: Currency);
    procedure SetCategory(const Value: string);
    function GetAnzahl: integer;
    function getGesamtpreis: Currency;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    property TicketName  : string   read FName    write SetName;
    property Preis       : Currency read FPreis   write SetPreis;
    property Category    : string   read FCategory write SetCategory;
    property ID          : integer  read FID      write FID;
    property Anzahl      : integer  read GetAnzahl;
    property Gesamtpreis : Currency read getGesamtpreis;
  end;

implementation

{$R *.fmx}

{ TFrame1 }

function TFrameTicket.GetAnzahl: integer;
begin
  result := trunc(SpinBox1.Value);
end;

function TFrameTicket.getGesamtpreis: Currency;
var
gesamtpreis: currency;
begin
result := Preis * Anzahl;
 gesamtpreis := gesamtpreis + result;
end;

procedure TFrameTicket.SetCategory(const Value: string);
begin
  FCategory := Value;
  lblCategory.Text := FCategory;
end;

procedure TFrameTicket.SetName(const Value: string);
begin
  FName := Value;
  lblName.Text := FName;
end;

procedure TFrameTicket.SetPreis(const Value: Currency);
begin
  FPreis := Value;
  lblPreis.Text := Format('%1.2f', [FPreis]);
end;

end.
Dies ist mein Quelltext von meinem Frame.
Falls ihr weitere Informationen braucht schicke ich diese mit.
Vielen Dank im Voraus für eure Hilfe.
Mit freundlichen Grüßen

mkinzler 14. Jul 2014 11:19

AW: Firemonkey Frame Fehler (Android)
 
Und was für 1044 Fehler hast Du bekommen? Und in welchen Zeilen?

ChristianG 14. Jul 2014 11:23

AW: Firemonkey Frame Fehler (Android)
 
Die Fehleranzahl liegt bei 1044.Die einzige Fehlermeldung ist:
Delphi-Quellcode:
[DCC Fataler Fehler] F2588 Linker-Fehlercode: 1 ($00000001)
und (Pfad)cannot find -dll

ChristianG 14. Jul 2014 13:02

AW: Firemonkey Frame Fehler (Android)
 
Hat jemand eine Idee was an dem quellcode falsch ist?
Delphi-Quellcode:
     for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(u);

       cdsBezahlen.Append;
       cdsBezahlen.FieldByName('Position').asInteger := u;
       cdsBezahlen.FieldByName('ID').AsString       := bnode.ChildNodes.FindNode('ID').Text;
       cdsBezahlen.FieldByName('Name').AsString     := bnode.ChildNodes.FindNode('Name').Text;
       cdsBezahlen.FieldByName('Kosten').AsString   := bnode.ChildNodes.FindNode('Price').Text;
       cdsBezahlen.FieldByName('Sitzrheie').AsString := bnode.ChildNodes.FindNode('SeatingCategory').Text;
       cdsBezahlen.Post;


       myFrame := TFrameTicket.Create(self);
       myFrame.Name :=Format( 'fr%s',[InttoStr(u)]);
       myFrame.Parent := TabItem5;
       myFrame.SetBounds(10, y, 237, 40);
       myFrame.Visible := true;
        y := y + 50;


       myFrame.TicketName := cdsBezahlen.FieldByName('Name').AsString ;
       myFrame.Category  := cdsBezahlen.FieldByName('Sitzrheie').AsString ;
       myFrame.Preis     := cdsBezahlen.FieldByName('Kosten').AsCurrency
       end;
Dies ist mein Programmcode aus meiner Hauptunit. Vielleicht hilft diese weiter

mkinzler 14. Jul 2014 13:07

AW: Firemonkey Frame Fehler (Android)
 
Kommt ein Fehler? Was soll er machen? Was macht?

ChristianG 14. Jul 2014 13:16

AW: Firemonkey Frame Fehler (Android)
 
Zitat:

Zitat von mkinzler (Beitrag 1265473)
Kommt ein Fehler? Was soll er machen? Was macht?

Die Fehler habe ich oben beschrieben. Der Frame erzeugt dynamisch eine Spinbox und 3 Labels, wo Namen, Sitzplatz und der Preis angegeben werden. Jetzt bin ich dabei es zu schaffen, dass wenn man auf die Spinbox klickt der Gesamtpreis berechnet wird. Aber zuerst muss der Frame auch auf Android funktionieren. Es ist ein Firemonkey Frame aber etwas stimmt nicht. Ich vermute, dass eine Windows Komponente sich eingeschlichen hat, jedoch weiß ich nicht wo.
Danke für die schnelle Antwort
Mit freundlichen Grüßen

mkinzler 14. Jul 2014 13:30

AW: Firemonkey Frame Fehler (Android)
 
Nicht in dieser Unit.

Schau Dir mal die Uses im der Hauptunit an bzw. die Projektdatei

ChristianG 14. Jul 2014 13:34

AW: Firemonkey Frame Fehler (Android)
 
Hier sind die Uses von meiner Hauptunit:
Delphi-Quellcode:
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Actions,
  FMX.ActnList, FMX.TabControl, FMX.StdCtrls, FMX.Layouts, FMX.Memo, Xml.xmldom,
  Xml.XMLIntf, Xml.XMLDoc, IdBaseComponent, IdComponent, StrUtils,
  IdTCPConnection, IdTCPClient, IdHTTP, FMX.Objects, FMX.Ani, System.Rtti,
  FMX.Grid, Data.DB, Datasnap.DBClient, FMX.Edit, Unit1;
und meine privates
Delphi-Quellcode:
private
    A: array of TValue;
//    FItem : TItem;
    XMLregestrierung : IXMLDocument;
    XMLbezahlen     : IXMLDocument;
    XMLDocument1 : IXMLDocument;
    XMLlogin    : IXMLDocument;
    ImageList : TStringList;
    ShowID      : int64;
Hilft dies Weiter?

ChristianG 14. Jul 2014 14:20

AW: Firemonkey Frame Fehler (Android)
 
Irgendetwas muss mit dem Frame falsch sein, denn bevor ich diesen Frame eingefügt habe hatte ich keine Probleme mit dem kompilieren. Ich finde aber die Lösung nicht.

mkinzler 14. Jul 2014 14:24

AW: Firemonkey Frame Fehler (Android)
 
Was für eien XML-Bibliothek ist den eingestellt?

ChristianG 14. Jul 2014 14:30

AW: Firemonkey Frame Fehler (Android)
 
Ich habe keine Bibliothek, da ich die XML Dateien aus dem Internet bekomme. Das müsste doch in den Uses stehen,oder?

ChristianG 14. Jul 2014 14:31

AW: Firemonkey Frame Fehler (Android)
 
Ich benutze keine Bibliothek, da ich alle Daten aus dem Internet bekomme.

mkinzler 14. Jul 2014 14:38

AW: Firemonkey Frame Fehler (Android)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Doch indirekt. XMLDocument verwendet eine XML-Bibliothek; ich vermute da ist der Provider MSXML eingestellt.

ChristianG 14. Jul 2014 14:41

AW: Firemonkey Frame Fehler (Android)
 
Bei mir werden die XML Dokumente nicht im Formular, sondern mit XMLlogin := NewXMLDocument; erstellt. Wo kann man dies nachsehen, wenn die automatisch erstellt werden?

mkinzler 14. Jul 2014 15:02

AW: Firemonkey Frame Fehler (Android)
 
Kennst Du die Hilfe?
Zitat:

Zitat von http://docwiki.embarcadero.com/Libraries/XE6/de/Xml.XMLDoc.TXMLDocument
Tipp: Um TXMLDocument in Mac OS X oder mobilen-Anwendungen zu verwenden, setzen Sie im Objektinspektor die Eigenschaft DOMVendor auf ADOM XML v4, direkt nachdem diese Komponente auf dem Formular-Designer abgelegt wurde. Ansonsten ist die TXMLDocument-Komponente für iOS-/Android-/OSX-Anwendungen nicht mehr verwendbar.


ChristianG 14. Jul 2014 15:10

AW: Firemonkey Frame Fehler (Android)
 
Wir reden aneinander vorbei. Vor der Einfügung des Frames lief alles zu 100%. In meiner Hauptunit habe ich oft mit XML-Dateien gearbeitet und hatte keine Probleme damit.Auch das kompilieren in Android hat super geklappt. Warum sollten die XML-Dateien den Fehler liefern wenn sie davor gut funktioniert haben?

mkinzler 14. Jul 2014 15:14

AW: Firemonkey Frame Fehler (Android)
 
Ich wollte ja nur helfen.

Also viel Glück noch!

ChristianG 14. Jul 2014 15:26

AW: Firemonkey Frame Fehler (Android)
 
Das war nicht als Beleidigung gemeint, sondern als Fehlerbeschreibung.:(
Ich benötige ja dringend Hilfe zu diesem Thema, aber ich weiß auch, dass meine XML-Dateien soweit in Ordnung sind.
Dies ist ein größeres Projekt, was ich Stück für Stück aufbauen möchte.
Ich Danke dir auch für deine Hilfe und möchte auch nur etwas zu der Fehlerbeschreibung aufbauen,also sei bitte nicht enttäuscht von meinem Kommentar vorhin.

Sir Rufo 14. Jul 2014 15:41

AW: Firemonkey Frame Fehler (Android)
 
Und die Suche hier im Forum oder bei Tante Google bringt da nix? (nur so als Wink mit dem Zaunpfahl)

ChristianG 14. Jul 2014 15:42

AW: Firemonkey Frame Fehler (Android)
 
Es liegt hier dran
Delphi-Quellcode:
[DCC Fataler Fehler] F2588 Linker-Fehlercode: 1 ($00000001)
Im Internet steht ich muss die SDK aktuallisieren. Nur habe ich keine Ahnung wie dies Geht
Tools>Optionen>SDK und weiter?

ChristianG 14. Jul 2014 15:59

AW: Firemonkey Frame Fehler (Android)
 
Das löschen der SDK hat leider auch nichts bewirkt. Und JA ich habe gegoogelt und in DP nachgesehen. Leider haben mir diese Ergebnisse nicht weiter geholfen:(. Habt ihr noch eine andere Idee um diese Fehlermeldung verschwinden zu lassen:cry:

ChristianG 14. Jul 2014 16:22

AW: Firemonkey Frame Fehler (Android)
 
Sollen der adb-Speicherort, der aapt-Speicherort und der Sdk-api-Level Speicherort leer bleiben?

Der schöne Günther 14. Jul 2014 16:50

AW: Firemonkey Frame Fehler (Android)
 
Ich habe in meinem Leben das RAD Studio nie etwas anderes als Windows ausspucken lassen, deshalb kann ich speziell zu Android nichts sagen.

Deshalb stochere ich nur etwas im Dunklen:
  1. Android-Emulator und echtes Android-Gerät verhalten sich beide so?`
  2. Windows läuft Win32 und Win64 nach wie vor richtig?
  3. Du hast alles einfach so auf der Platte liegen und setzt keine Versionsverwaltung ein, oder? Hast du deine Fassung bei der "alles ging"™ noch?
  4. Hast du nach der Umstellung das Projekt einmal "bereinigt", dann neu "erzeugt"?

Sir Rufo 14. Jul 2014 16:51

AW: Firemonkey Frame Fehler (Android)
 
Zitat:

Zitat von ChristianG (Beitrag 1265520)
Sollen der adb-Speicherort, der aapt-Speicherort und der Sdk-api-Level Speicherort leer bleiben?

Gute Frage, aber hier rächt sich natürlich ganz übel das "ich pack mal alles in einen Topf rein".

Wenn du deinen Code in Module unterteilst, dann kannst du durch Austauschen der echten Module gegen Dummy-Module schauen, wo genau das Problem liegt.

Ein simples Modul wäre ja das Beschaffen der Events:
Delphi-Quellcode:
unit Event;

interface

type
  TEvent = class
  private
    FShowID : Integer;
    FEventID : Integer;
    FEventName : string;
    FSiteID : Integer;
    FMediaNumber : Integer;
    FLanguageVersionID : Integer;
    FShowTime : TDateTime;
  public
    constructor Create( ShowID, SiteID, EventID, MediaNumber, LanguageVersionID : Integer; ShowTime : TDateTime;
      EventName : string );
    property ShowID : Integer read FShowID;
    property ShowTime : TDateTime read FShowTime;
    property SiteID : Integer read FSiteID;
    property EventID : Integer read FEventID;
    property EventName : string read FEventName;
    property MediaNumber : Integer read FMediaNumber;
    property LanguageVersionID : Integer read FLanguageVersionID;
  end;

implementation

{ TEvent }

constructor TEvent.Create( ShowID, SiteID, EventID, MediaNumber, LanguageVersionID : Integer; ShowTime : TDateTime;
  EventName : string );
begin
  inherited Create;
  FShowID := ShowID;
  FSiteID := SiteID;
  FEventID := EventID;
  FMediaNumber := MediaNumber;
  FLanguageVersionID := LanguageVersionID;
  FShowTime := ShowTime;
  FEventName := EventName;
end;

end.
Der Service als Interface
Delphi-Quellcode:
unit EventService;

interface

uses
  Event;

type
  IEventService = interface
    ['{601B8893-EB6D-4582-AC17-65DB0D09DD4F}']
    function GetEvents( EventID : Integer; FromDate, ToDate : TDate ) : TArray<TEvent>;
  end;

implementation

end.
Und einen Testservice, damit wir nicht immer auf den Webservice zugreifen müssen und ganz wichtig die Anwendung unabhängig vom Webservice prüfen können.
Delphi-Quellcode:
unit TestEventService;

interface

uses
  System.Generics.Collections,
  Event,
  EventService;

type
  TTestEventService = class( TInterfacedObject, IEventService )
  public
    function GetEvents( EventID : Integer; FromDate : TDate; ToDate : TDate ) : TArray<TEvent>;
  end;

implementation

uses
  System.SysUtils;

{ TTestEventService }

function TTestEventService.GetEvents( EventID : Integer; FromDate, ToDate : TDate ) : TArray<TEvent>;
var
  LEvents : TList<TEvent>;
begin
  // Build some Dummy Events
  LEvents := TList<TEvent>.Create;
  try
    LEvents.Add( TEvent.Create( 1, 1, EventID, 1, 1234, FromDate + EncodeTime( 14, 0, 0, 0 ), 'Dummy-Event 1' ) );
    LEvents.Add( TEvent.Create( 2, 1, EventID, 1, 1234, FromDate + EncodeTime( 15, 0, 0, 0 ), 'Dummy-Event 2' ) );
    LEvents.Add( TEvent.Create( 3, 1, EventID, 1, 1234, FromDate + EncodeTime( 16, 0, 0, 0 ), 'Dummy-Event 3' ) );

    Result := LEvents.ToArray;
  finally
    LEvents.Free;
  end;
end;

end.
Und ein kleiner Test sieht dann so aus:
Delphi-Quellcode:
program dp_181082;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.Generics.Collections,
  System.SysUtils,
  EventService in 'EventService.pas',
  Event in 'Event.pas',
  TestEventService in 'TestEventService.pas',
  WebEventService in 'WebEventService.pas';

procedure ShowEvents( EventService : IEventService );
var
  LEvents : TList<TEvent>;
  LEvent : TEvent;
begin
  LEvents := TObjectList<TEvent>.Create( True );
  try
    LEvents.AddRange( EventService.GetEvents( 1, EncodeDate( 2014, 01, 01 ), EncodeDate( 2014, 01, 02 ) ) );

    for LEvent in LEvents do
      begin
        Writeln( LEvent.ShowID, '-', FormatDateTime( 'dd.mm.yyyy hh:nn', LEvent.ShowTime ), '-', LEvent.EventName );
      end;

  finally
    LEvents.Free;
  end;
end;

begin
  try
    ShowEvents( TTestEventService.Create );
  except
    on E : Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;
  ReadLn;

end.
Wenn das alles läuft, dann testet man das mit dem echten Service. Und wenn es dabei dann zu Fehler kommt (beim Erzeugen, zur Laufzeit) dann muss man wohl an diesen Service ran.

ChristianG 14. Jul 2014 16:54

AW: Firemonkey Frame Fehler (Android)
 
So. Jetzt habe ich die Lösung. Ich habe SDK noch einmal gelöscht, das Programm geschlossen, den Computer neu gestartet und Delphi neu angemacht. Jetzt geht alles wieder wie gehabt. Jetzt stelle ich mir die Frage warum diese Fehlermeldung aufgetreten ist. Kann es mir jemand erklären?
ps: Die Pfade sind verloren gegangen. Jetzt sind sie wieder in der SDK

ChristianG 14. Jul 2014 16:57

AW: Firemonkey Frame Fehler (Android)
 
Zitat:

Zitat von ChristianG (Beitrag 1265528)
So. Jetzt habe ich die Lösung. Ich habe SDK noch einmal gelöscht, das Programm geschlossen, den Computer neu gestartet und Delphi neu angemacht. Jetzt geht alles wieder wie gehabt. Jetzt stelle ich mir die Frage warum diese Fehlermeldung aufgetreten ist. Kann es mir jemand erklären?
ps: Die Pfade sind verloren gegangen. Jetzt sind sie wieder in der SDK

Danke für eure Hilfe :-D:-D

Sir Rufo 14. Jul 2014 17:01

AW: Firemonkey Frame Fehler (Android)
 
Zitat:

Zitat von ChristianG (Beitrag 1265529)
Zitat:

Zitat von ChristianG (Beitrag 1265528)
So. Jetzt habe ich die Lösung. Ich habe SDK noch einmal gelöscht, das Programm geschlossen, den Computer neu gestartet und Delphi neu angemacht. Jetzt geht alles wieder wie gehabt. Jetzt stelle ich mir die Frage warum diese Fehlermeldung aufgetreten ist. Kann es mir jemand erklären?
ps: Die Pfade sind verloren gegangen. Jetzt sind sie wieder in der SDK

Danke für eure Hilfe :-D:-D

Das du deine Beiträge 24h bearbeiten kannst ist dir bekannt? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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