Jump to content

mausmb

Members
  • Content Count

    55
  • Joined

  • Last visited

Everything posted by mausmb

  1. 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
  2. mausmb

    Android in VMWare

    Hi, VMware, delphi standard instalation with Android SDK/NDK... debugging working just fine (since Delphi Berlin). Regards, M
  3. Hi, from July 23 - to August 1. br,
  4. mausmb

    Install Android SDK manually?

    Hi, https://docs.unity3d.com/560/Documentation/Manual/android-sdksetup.html or install Android studio ... then edit path's regards, mm
  5. 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!
  6. mausmb

    DBNavigator Losing Colours

    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
  7. 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
  8. mausmb

    Generating one-to-many on the fly with Live Bindings

    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
  9. mausmb

    RIO - FDMemTable fielddefs design time bug ?

    Yes .and on many other properties (FMX)
  10. mausmb

    Problems with Listview fmx 10.3 ,close application

    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
  11. mausmb

    Problems with Listview fmx 10.3 ,close application

    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
  12. mausmb

    MessageDialog in Delphi 10.3

    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,
  13. mausmb

    Generating one-to-many on the fly with Live Bindings

    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
  14. 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
  15. 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}
  16. 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
  17. 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
  18. mausmb

    Delphi Bugs reported to QualityPortal

    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
  19. mausmb

    Delphi Bugs reported to QualityPortal

    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
  20. 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
  21. 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
  22. 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
  23. Solved with Frac ! wsInvoice.TimeTransaction.AsUTCDateTime:=Frac(tblInovicesTimeTransaction.AsDateTime); br, Marjan
  24. 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
  25. mausmb

    Debugging in Android

    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
×