Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Firemonkey Frame Fehler (Android)
14. Jul 2014, 17:51
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
|