Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/30/20 in all areas

  1. Juan Martinez

    The android app doesn't start at specific devices

    Hello Dave, I've discovered the problem. I upload and 64 bits apk with a reference to a prebuilt 32 bits apk. I had problems with the aab support in the previous version of Delphi and I prefer this way. The problem was that I referenced an old .so file in the Android64 deployment window. Samsung J3, Samsung A10... are 32 bits. Problem Solved. I've learned: check carefully the libs and so referenced in deployment. Dave: THANK YOU VERY MUCH. It's not the first time you try to help me, and you don't know how useful was your workarounds and firebase examples in your blog. Very talented Delphi developer, no doubt Thanks
  2. Anders Melander

    How do I enumerate all properties of a Variant?

    Those are just the WMI methods and they are all documented. https://docs.microsoft.com/en-us/windows/win32/api/wbemcli/nn-wbemcli-iwbemclassobject If you want to talk to a COM server why are you then going through WMI? Are you sure it isn't a WMI Provider you are talking about? If you install the Windows SDK (just the tools parts) there's a utility in it called OleView that you can use to examine type libraries and COM servers. The type library of your server is probably embedded in the EXE file. Edit: If it's a WMI provider then it's probably a DLL and it's probably early bound and without a type library. It depends on what kind of provider it is.
  3. Jacek Laskowski

    Selective Debugging propably has a issue

    I guess I was in too much of a hurry with this report. I guess that's because I was very annoyed by this mistake before. Now, after restarting the machine, the bug doesn't appear anymore, even though I have already entered the settings several times. If something happens, I will let you know.
  4. Roland Skinner

    Filter Exceptions expert and IOS / Android apps

    Hi. No problem assisting. I've been using GExperts for probably 20 years; glad I can help out. This is Linux, with GExperts uninstalled: "Error Message": Division by Zero: Accessing Nil-pointer (calling ClassName on TObject variable): Now with GExperts installed and exception-expert enabled: Division by Zero: Accessing Nil-pointer: Then, in iOS (GExperts installed and expert enabled): Division by Zero: Accessing Nil-pointer: I'll report the errors with the message to Embarcadero. I actually came here looking about issues I have with the Linux debugger, to see if anyone else had experienced the problems I've noticed. I'll report these too. (For example, objects are displayed as pointer-addresses only, yet you can see their member-values in a popup-inspector.)
  5. FPiette

    How do I enumerate all properties of a Variant?

    Yes, you can. Basically, you have to call GetTypeInfoCount(), GetTypeInfo(), GetTypeAttr() and other functions (All documented by Microsoft). Here is a function to list all method names including property getter/setter. Similar code can enumerate argument list, argument data types and return value data type. procedure DisplayMethodNames( const DispIntf : IDispatch; const IntfName : String; Strings : TStrings); var Count : Integer; TypeInfo : ITypeInfo; TypeAttr : PTypeAttr; FuncDesc : PFuncDesc; HR : HRESULT; I : Integer; FuncName : WideString; begin if IntfName <> '' then Strings.Add(IntfName); Count := 0; HR := DispIntf.GetTypeInfoCount(Count); if Failed(HR) or (Count = 0) then Exit; HR := DispIntf.GetTypeInfo(0, 0, TypeInfo); if Succeeded(HR) and (TypeInfo <> nil) then begin TypeAttr := nil; HR := TypeInfo.GetTypeAttr(TypeAttr); if Succeeded(HR) and (TypeAttr <> nil) then begin for I := 0 to TypeAttr.cFuncs - 1 do begin FuncDesc := nil; HR := TypeInfo.GetFuncDesc(I, FuncDesc); if Succeeded(HR) and (FuncDesc <> nil) then begin TypeInfo.GetDocumentation(FuncDesc.memid, @FuncName, nil, // DocString, nil, // HelpContext nil); // HelpFile if Length(FuncName) <> 0 then Strings.Add(Format(' %-3d %s', [I, FuncName])); TypeInfo.ReleaseFuncDesc(FuncDesc); end; end; TypeInfo.ReleaseTypeAttr(TypeAttr); end; end; end;
×