![]() |
TEvent unter iOS
Hi,
ich wollte keine Leichenfledderei betreiben und den Thread von Mavarik herauskamen, aber mir ist da ein Fehler unter 10.2 aufgefallen:
Code:
Wenn ich TEvent verwende klappt das unter Android wie unter Windows korrekt. In iOS verhält sich das ganze aber komisch. Klicke ich in obigen Beispiel 5x auf Button1, muss ich hinterher 5x auf Button2 klicken, damit Event wieder zurückgesetzt wird.
unit UMain;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation, System.SyncObjs; type TForm3 = class(TForm) Label1: TLabel; Button1: TButton; Button2: TButton; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen } FEvent: TEvent; public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.fmx} procedure TForm3.Button1Click(Sender: TObject); begin // if FEvent.WaitFor(0) <> TWaitresult.wrSignaled then FEvent.SetEvent; end; procedure TForm3.Button2Click(Sender: TObject); begin //if FEvent.WaitFor(0) = TWaitresult.wrSignaled then FEvent.ResetEvent; end; procedure TForm3.FormCreate(Sender: TObject); begin FEvent := TEvent.Create(nil, true, false, ''); end; procedure TForm3.FormDestroy(Sender: TObject); begin FEvent.Free; end; procedure TForm3.Timer1Timer(Sender: TObject); begin case FEvent.WaitFor(0) of wrSignaled: Label1.Text := 'Signaled'; wrTimeout: Label1.Text := 'Timeout'; wrAbandoned: Label1.Text := 'Abandoned'; wrError: Label1.Text := 'Error'; wrIOCompletion: Label1.Text := 'IOCompletion'; end; end; Kann das jemand eventuell verifizieren? Christian |
AW: TEvent unter iOS
Liste der Anhänge anzeigen (Anzahl: 2)
Kann ich hier unter Delphi 10.2.1 (mit iOS 11 Patch) nicht nachvollziehen.... funktioniert genauso, wie unter Windows, ....
Timeout -> "Set" -> Signaled -> "Reset" -> Timeout Anhang 48153 Anhang 48152 |
AW: TEvent unter iOS
Danke für die Rückmeldung. Die Konfiguration hier ist die selbe.
Wenn ich hier x-Mal auf SetEvent klicke, muss ich allerdings x-Mal auch auf ResetEvent klicken, damit das wieder stimmt. Aufgefallen ist mir das eigentlich nur, da mein Ringpuffer, der über ein Abort-Event gestoppt und fortgesetzt wird unter iOS nicht lief. Ich hab vorsorglich eingebaut.
Code:
Christian
function Check(Event: TEvent): Boolean;inline;
begin result := Event.WaitFor(0) = wrSignaled; end; procedure TDataCache.SetAbort(abort: Boolean); begin {$IFDEF IOS} if Check(ev_abort)=abort then exit; {$ENDIF} if (abort) then ev_abort.SetEvent() else ev_abort.ResetEvent(); end; |
AW: TEvent unter iOS
hmm... Ein Thread von mir?
Ich habe kein Problem mit TEvent auf iOS, Android oder Windows... Das gilt auch für alle Delphi Versionen - soweit ich mich erinnern kann... Mavarik |
AW: TEvent unter iOS
|
AW: TEvent unter iOS
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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 by Thomas Breitkreuz