mausmb
Members-
Content Count
55 -
Joined
-
Last visited
Everything posted by mausmb
-
Closed : bug in 10.3.2 (SugarLoaf is working ) Hi, I have a problem with intercepting SOAP packages. I'm using WSDL importer and THTTPRIO OnBeforeExecute and OnAfterExecute event. OnAfterExecute I get Soap response package without problem, but OnBeforeExecute Tstream (as String) is always empty. What I'm doing wrong ? procedure TDummyBeforeEx.Beforexecute(const MethodName: string; SOAPRequest: TStream); var sl : TStringList; // If I'm ussing Array of byte is the same empty result when encoding to string begin sl := TStringList.Create; SOAPRequest.Position := 0; try sl.LoadFromStream(SOAPRequest); if sl.Text='' then // Always empty ! exit; sl.Text := StringReplace(sl.Text, '<soap:Body>', '<soap:Body>XXX', [rfReplaceAll]); sl.SaveToStream(SOAPRequest); finally sl.Free; end; end; function GetKasaSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): KasaSoap; const defSvc = 'Kasa'; defPrt = 'KasaSoap'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try rio.OnAfterExecute:=TDummyAfterEx.AfterExecute; // working as aspected rio.OnBeforeExecute:=TDummyBeforeEx.Beforexecute; RIO.Converter.Options:=RIO.Converter.Options+[TSOAPConvertOption.soSendMultiRefObj,TSOAPConvertOption.soSendMultiRefArray]; // RIO.HTTPWebNode.ConnectTimeout:=10; // RIO.HTTPWebNode.SendTimeout :=10; // RIO.HTTPWebNode.ReceiveTimeout:=10; Result := (RIO as KasaSoap); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end; Regards, M
-
Hi, VMware, delphi standard instalation with Android SDK/NDK... debugging working just fine (since Delphi Berlin). Regards, M
-
Google Play Store - request extension for Delphi apps
mausmb replied to Darian Miller's topic in Cross-platform
Hi, from July 23 - to August 1. br, -
Hi, https://docs.unity3d.com/560/Documentation/Manual/android-sdksetup.html or install Android studio ... then edit path's regards, mm
-
Google Play Store - request extension for Delphi apps
mausmb replied to Darian Miller's topic in Cross-platform
From Google Play today : Thank you for your patience while we reviewing your request. I'm happy to inform you that your app "*********" has been approved for 64-bit extension. Please note that the extension will only be given until August 1st, 2020. In addition, once your app is compliant with 64-bit, please let me know by replying this email. Thank you for supporting Google Play. Have a nice day! -
Hi, property StyleElements: TStyleElements read FStyleElements write SetStyleElements default 7; Specifies the style elements that are used by the control. Use StyleElements to customize the style of the control. If a custom style is enabled, you can enable or disable style elements in the control. StyleElements is a set of values that specify which elements of the current style are to be applied to this control. By default, all the elements of the style are enabled. But for TdbNavigator is not possibile to set styleelements .. partial success with grids... br, M
-
Delphi Rio, Android 5.1 - problem with TEdit and TStringGrid on the same form
mausmb replied to marcin's topic in FMX
Hi, Some Android 5.1 (not all!!) and Delphi Rio have some (other/different) issues... I was forced to compile app with Tokyo for Android 5.1. The best solution is upgrade device 5.1. to Android 6.0 or more. However some "no-name" devices don't provide upgrade. br, Marjan -
Generating one-to-many on the fly with Live Bindings
mausmb replied to Primož Gabrijelčič's topic in FMX
Not going into "demo VS production" app area...Let's say (for the sake of the argument) that statement "but trying to do too much on a single mobile screen at the same time" is true . With Livebindings performance is poor. Without Livebindigs performance is good. So what's your argument again ? 🙂 br, m -
RIO - FDMemTable fielddefs design time bug ?
mausmb replied to Stéphane Wierzbicki's topic in Databases
Yes .and on many other properties (FMX) -
I'm affraid you won't get best UX&performance with livebindigs br, m p.s. If you have more complex ListView you can do it manually 🙂 with TAppearanceListViewItems... LItem.Objects.FindDrawable('name').Width:=LColWidth; // LItem.Objects.FindDrawable('name').Data:=yourdata
- 3 replies
-
- firemonkey
- listview
-
(and 1 more)
Tagged with:
-
Hi, I have all ListViews dynamicly created and "connected" to FDmemTable. Key word is "connected" - what do you mean with that ? With Live Bindings ? var LItem: TListViewItem; begin MyLV1.BeginUpdate; MyLV1.Items.Clear; myFDmemTable.First; While not myFDmemTable.eof Do Begin LItem := MyLV1.Items.Add; LItem.Text := myFDmemTableName.AsString; LItem.Tag := myFDmemTableKey.AsInteger; myFDmemTable.next; end; MyLV1.EndUpdate; Working fine (and fast) on Android 5.x to 9.1 br, m
- 3 replies
-
- firemonkey
- listview
-
(and 1 more)
Tagged with:
-
This code working just fine in 10.3 Android & Windows ... dont' know with Tmodalresult TDialogService.MessageDialog((mymessage), system.UITypes.TMsgDlgType.mtConfirmation, [system.UITypes.TMsgDlgBtn.mbYes, system.UITypes.TMsgDlgBtn.mbNo], system.UITypes.TMsgDlgBtn.mbYes,0, procedure (const AResult: System.UITypes.TModalResult) begin case AResult of mrYES: Begin ..... br,
-
Generating one-to-many on the fly with Live Bindings
mausmb replied to Primož Gabrijelčič's topic in FMX
Hi, Not to impose on your excercise 🙂 But Livebindigs are not usefull in "real" application on Android/iOs. I was forced, due to bad performance, to drop all bindigs and manually code everything. br, Marjan -
Android 8.0 Permissions errors using Delphi Rio 10.3
mausmb replied to Jose Morango's topic in Cross-platform
Yes and No - depending on functionality. Almost all APP request permission when installed/started. It's tricky in Delphi to do that with new approach. If you're for example reading i.e. setup. login, token,... from storage ... you don't have other option. if you just want access when app is up&running then is better to request permission when needed. br, Marjan -
Android 8.0 Permissions errors using Delphi Rio 10.3
mausmb replied to Jose Morango's topic in Cross-platform
Quick Example : private {$IFDEF ANDROID} fReadStorage:=JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); fWriteStorage:=JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); fBlueTooth:=JStringToString(TJManifest_permission.JavaClass.BLUETOOTH); {$ENDIF} procedure Tfrm????.FormShow(Sender: TObject); begin {$IF DEFINED(IOS) or DEFINED(ANDROID)} PermissionsService.RequestPermissions([fReadStorage,fWriteStorage,fBlueTooth], RequestPermissionsResult, DisplayRationale); {$ENDIF} end; procedure Tfrm????.RequestPermissionsResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); begin if (Length(AGrantResults) = 3) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) and (AGrantResults[2] = TPermissionStatus.Granted) then // execute procedure ... as before on form show ... else Begin TDialogService.ShowMessage('No ....'); Application.Terminate; End; // če ne bi dovolili permission bi moral showerror end; {$ENDIF} {$IF DEFINED(IOS) or DEFINED(ANDROID)} procedure Tfrm????..DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc); var I: Integer; RationaleMsg: string; begin for I := 0 to High(APermissions) do begin if APermissions = fReadStorage then RationaleMsg := RationaleMsg + 'Aplikacija zahteva branje pomnilnika' + SLineBreak + SLineBreak else if APermissions = fWriteStorage then RationaleMsg := RationaleMsg + 'Aplikacija zahteva pisanje pomnilnika'+ SLineBreak + SLineBreak else if APermissions = fBlueTooth then RationaleMsg := RationaleMsg + 'Aplikacija zahteva BlueTooth'; end; TDialogService.ShowMessage(RationaleMsg, procedure(const AResult: TModalResult) begin APostRationaleProc; end) end; {$ENDIF} -
Hi, Any ideas how to enable EU decimal behaviour in Rio ? In both versions FloatToStr returns number with ',' NumberPad Delphi 10.2.3 behaviour : you can enter ',' or '.' (comma is for EU right choice) Delphi 10.3 behaviour : Android keyboard displays ',' and '.'., but Enter ',' or '.' is not possibile DecimalNumberPad Delphi 10.2.3 behaviour : you can enter ',' or '.' (comma is for EU right choice) Delphi 10.3 behaviour : Android keyboard displays ',' and '.'. Enter is possibile. Entaer is ONLY for '.' , regardless that dispaly is with ',' Regards, Marjan
-
That's not true at all 🙂 Maybe "EU decimal behaviour is wrong expression...maybe "locale settings not working (properly) with TNumberBox and Tedit. TnumberBox not working at all (enter 2.5 and Tnumberbox converts to 25 !). On Android : 1. Tnumberbox display decimal numbers with comma (","). 2. when you enter decimal number you have to press DOT (".") - that's contra intuitive for user when COMMA is displayed 3. When you enter 2.5 Tnumberbox converts to 25 There is such a thing :-) (The 22nd General Conference on Weights and Measures declared in 2003 that "the symbol for the decimal marker shall be either the point on the line or the comma on the line") examples (all EU countries and Canada w/o UK - if UK is EU country 🙂 using COMMA as decimal separator): https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html https://en.wikipedia.org/wiki/Decimal_separator TestNumbers.zip
-
Not yet 🙂 I will ! I was searching/hoping for alternative solution and hoping that ... I don't understand it well enough (or know ) how to solve problem. https://quality.embarcadero.com/browse/RSP-21850 https://quality.embarcadero.com/browse/RSP-21849 https://quality.embarcadero.com/browse/RSP-21848 br, Marjan
-
I found 3 bugs (but didn't report them to Quality portal) 1. WSDL import Rio 10.3 converts : FCertBytes: TArray<System.Byte>; procedure SetCertBytes(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>); Everyt ByteArray converter names "Array" and <System.Byte> is Added 🙂 Tokyo 10.2.3 converts : FCertBytes: TByteDynArray; procedure SetCertBytes(Index: Integer; const ATByteDynArray: TByteDynArray); 2. problems with time 3. DecimalSeparator and TnumberBox br, Marjan
-
Hi, Working with time in DB datetime format (example : '30.12.1899 09:18:54') on Android Delphi 10.3 throws exception- sTimespanTooLong. On Windows (and previous Delphi version) is OK. class function TTimeSpan.GetScaledInterval(Value: Double; Scale: Integer): TTimeSpan; var NewVal: Double; begin if IsNan(Value) then raise EArgumentException.Create(sTimespanValueCannotBeNan); NewVal := Value * Scale; if Value >= 0.0 then NewVal := NewVal + 0.5 else NewVal := NewVal - 0.5; if (NewVal > MaxMilliseconds) or (NewVal < MinMilliseconds) then raise EArgumentOutOfRangeException.Create(sTimespanTooLong); Result := TTimeSpan.Create(Trunc(NewVal) * TicksPerMillisecond); end; How to set initial datetime for Android ? WorkAround is simple, but ugly if (NewVal > MaxMilliseconds) then NewVal:=MaxMilliseconds; if (NewVal < MinMilliseconds) then NewVal:=MinMilliseconds; Regards, Marjan
-
It's not just easier override And recurring problem with TXSDateTime "The given "30.12.1899 13:09:05" local time is invalid (situated within the missing period prior to DST" br, Marjan
-
Another/same issue with TNumberBox. With local EU settings you can enter decimal number, but on exit is without decimal ... exmaple enter 2,5 on exit is 25 ! 😞 br, Marjan
-
Solved with Frac ! wsInvoice.TimeTransaction.AsUTCDateTime:=Frac(tblInovicesTimeTransaction.AsDateTime); br, Marjan
-
type tblInovices: TFDMemTable; tblInovicesTimeTransaction: TDateTimeField; ... onNewRecord... tblInovicesTimeTransaction.AsDateTime:=Time; afterpost - Prepare data and send it to Web (SOAP) web service if tblInovicesTimeTransaction.Value<>Null then Begin wsInvoice.TimeTransaction:=TXSDateTime.Create; wsInvoice.TimeTransaction.AsUTCDateTime:=tblInovicesTimeTransaction.AsDateTime; // Exception sTimespanTooLong ..traced to Unit System.TimeSpan // same Exception (sTimespanTooLong) Error with AsDateTime // wsInvoice.TimeTransaction.AsDateTime:=tblInovicesTimeTransaction.AsDateTime; End; Regards, marjan
-
Hi, 1. If you have Phone Android version higher than SDK version ? it's a problem 😞 2. My Debug issues : After a few successful debug session (10.2.3 or 10.3) debuging is not working anymore ('port in use' ) . Close Delphi, reconnect device and It's working again. Regards, Marjan