Jump to content

Rollo62

Members
  • Content Count

    1671
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by Rollo62

  1. You could try to copy the new helper from DateUtils.pas D11.2 into a separate unit, like DateUtils.Helper.pas type TDateTimeHelper = record helper for TDateTime /// <summary>Now returns the current date and time</summary> class function Now: TDateTime; static; inline; /// <summary>Now returns the current UTC date and time</summary> class function NowUTC: TDateTime; static; /// <summary>Strips the time portion from a TDateTime value</summary> function GetDate: TDate; inline; So that you can use it in D10.4.2 too. There should be only a few changes needed, if any, to make that run in D10.4.2 too. I would encapsule the content of this new helper unit with a Compiler directive, to ensure this is only used below version D11.2.
  2. That is very much true. So that is the reason I see chatGPT only as tool for generating clever answers, not as 100% precise encyclopedia. Understanding how it works, it's even more astonishing to see that this AI really evolves a human-like "consciousness", when it comes to philosophical or open questions. I have long time suspected that AI needs some critical mass before it can develop a kind of "consciousness". The current GPT-3 and ChatGPT clearly point into that direction for me and I think some AI had already passed some Turing tests. It is the "creativeness" that I find particularly interesting, not the "pedantically precision", because such a creative, inspiring tool is suitable for a whole range of tasks. I'm sure something like Dall-E will transform an entire profession of illustrators, just as DeepL has already done with the profession of translators. Of course, it's not so desirable to make all creative professions obsolete, but I don't think we'll be able to stop this development anyway. But I also believe that there may soon be robots in the household and for this the current "understanding" of facts is already more than sufficient. The only question is how to redefine these answers into actions. I have looked at a whole series of very well trained GPT-3 chats, which really follow a complete discussion with a kind of "awareness" that they themselves are AI and have limited possibilities. If it succeeds to cast the already very good answers of the AI into real understanding of facts, then the next step of the AI will be at the front door. For the reasons mentioned above I doubt that it is already so far. It is still not sure whether the AI can really understand at least something, or only generates very good text patterns randomly. Only the humans have the feeling that those answers were too good to be random.
  3. It seems to depend on what information from the internet you want to believe. https://www.swimcheck.com/en/city/1005/beaches-wilhelmshaven I'm not an expert on "Wilhelmshaven", but if I Google this I would came to similar insights. Maybe the problem is that too many false information is out there and an AI cannot easily separate truth from lie. I do not expect 100% correct data from an AI, but a good support in doing tasks.
  4. Rollo62

    ChatGPT Example

    Thats true. As far as I could see from the chatGPT Playground, this is very well capable to remember earlier prompts in the conversation, while this GPT3 API only answers more or less to the current prompt. I think that is one of the main, important differences so far in chatGPT, among other algorithm details probably.
  5. Rollo62

    Upload media to WhatsApp cloud API

    I would try with RestDebugger first, if that is successful it may generate the right code to access the API.
  6. I think that is a very old and well known marketing principle: You can grow your business fast and easy by selling new products to existing customers, instead of trying to find new customers. This is why I can understand that well, although I find the mass of spamming quite annoying at the same time.
  7. Rollo62

    Include External Text Files in Output Folder

    Not exactly clear what you are looking for, but you can also use Resources to include files Its possible to load them to ResourceStream like that. procedure TForm1.Button1Click(Sender: TObject); var List: TStringList; Stream: TResourceStream; begin Stream := TResourceStream.Create(HInstance, '<Resource identifier>', RT_RCDATA); try List := TStringList.Create; try List.LoadFromStream(Stream); Label1.Text := List.Text; finally List.Free; end; finally Stream.Free; end; end; But these were fixed files, not user-loadable via dialog in the app.
  8. d:\Prg\Embarcadero\Studio\22.0\bin>certUtil -hashfile designide280.bpl SHA256 SHA256-Hash von designide280.bpl: 0fc933dde785368de661ec031580b2ae10d316532fd2c8c1ec2b831dc2605dc8 CertUtil: -hashfile-Befehl wurde erfolgreich ausgeführt.
  9. Well, indeed. Changing the personality changes this Version, never realized that this makes a difference. Which leads me to the question if I use my RadStudio maybe in the wrong way ? Does it make a different using RadStudio with its Delphi personality, versus opening Delphi personality directly ? It seems somewhat different, so is this maybe the cause of somewhat alien errors we see ?! What is the recommended way to open and use RadStudio - Delphi then, for cross-platform, it seems I will make some experiments how it behaves different.
  10. Well it doesn't work for me, although I have tried re-install automatically, tried re-installed manually, re-booted PC. Even when I check the files in the patch they were 1:1 identical, compared to the ones under /bin / bin64, etc. This number comes maybe from somewhere else, or maybe differs between Delphi, RadStudio, Enterprise or Architect ?
  11. Well, I've got the same "Embarcadero® RAD Studio 11 Version 28.0.46141.0937 " It seems it was well installed before, now reinstalled the Patch, but still 28.0.46141.0937 after it restarted. What exactly did you re-install, not only the Patch, or the complete IDE ? Edit: I cleaned everything, re-booted PC, re-installed Patch manually. Again it looks very promising, the logs very fine, but its still 28.0.46141.0937. I dont' re-install my IDE right now, it works OK so far, but would be great to know what exactly goes wrong.
  12. Rollo62

    TRichEdit equivalent in FMX?

    Thanks for pointing me to that, I used the old VCL version some years ago. Didn't realize that this is now FMX ready too, at least a few platforms, that is great news. I could recommend the old VCL version, not sure yet about FMX, but I will look into that.
  13. Rollo62

    Time-Limited offer from Almediadev and DelphiStyles!

    Tnanks for the interesting offer. Regarding the DelphiStyles, I always wonder if their underlying components were constructed based on the original FMX styles structure, or if they might use a completely different underlying structure. Technically I think it should be possible to rework the internal structure completey, since this is build on shape primitives mainly, should be easy to replace. I'm asking because the original FMX Styles components have some kind of lack in customizations, like background color, foreground color, accent colors, fonts, etc. Moreover the original FMX Styles internal representations differ a lot over the different platforms, so that on some OS the handling and behaviour will differ greatly. I think to have a 1:1 same internal structure would be best for all platforms, to have a unified interface, but I haven't looked too deep into the real reasons why its so different in the first place. If DelphiStyles may use a different internal structure and maybe offers easy accessible color objects, to customize the whole color scheme in one central place, that would make a lot of sense to me. A life-time license is a nice thing, how is your opinion about the "future-readiness" of the Styles, have you seen big, internal structural or conceptual changes over the past years since XE2-3 ? Currently I make no or very little use of FMX Styles, although I think the "Style" concept is a very good thing, only it makes way too much extra work, than it should, if you need small customizations.
  14. Hi there, I was experimenting with the Android.template.xml, to use different API-related selections, to searate old and new Bluetooth settings. Some recommendations in the web point to this nice and clean solution, so separate APIs in the manifest: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="..."> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" /> <application ... /> </manifest> Using the android:maxSdkVersion and the android:usesPermissionFlags="neverForLocation" identifier would allow an easy control over different versions. Unfortunately this didn't work in my current setup, maybe I have to rry again with a clean project, but I see a failure "attribute neverForLocation is not available". This seems that targeting to API31 is needed, and I'm still under API30, in its D11 default setup. But I'm not sure why this message pops up, and is not simply ignored, if there is an unknown attribute. Probably this needs linked somehow to the API31, and API30 throws exception. To be rescued, maybe the android:maxSdkVersion might work under different versions in different configurations, to make Delphi compatible with several API's at the same time in one manifest ? To be clear, I'm not talking about the targetSdkVersion here, but if someone could make use of the android:maxSdkVersion attribute already. I'm curious if somebody has get this working as expected under Delphi. Beside that, what would be the best way to handle BluetoothLE under API30, to be compatible with old and new devices ?
  15. Yes iOS was more stable and Android needed to catch up, but also in older versions it was stable since quite some time. Remember Windows, also there BT was ( and is ) somewhat alien for a long time. The biggest problem is that all OS permanently make changes in the permission system around the hardware, mainly because of GDPR. This enforces still some sudden, hysteric implementations here and there, although I assumed this should be mature meanwile in the whole society for some time. It looks to me that still there are no "best practices" how to handle GDPR in general, no matter for a sales slip in the bakery, for Cookies, for login to EU database, for medical devices, banking or software apps. I'm looking forward for more creepy implementations to come in the future, its not all Android's or iOS's faults.
  16. Yes, that was the case for older Android versions. They considered that BLE can be tracked or used for tracking ( think of Beacons ) and therefor need a location permission. Unfortunately they never invented a nearby location permission, but re-used the GPS one for this.
  17. @pcplayer99 I'm afraid that alone won't do it for all versions of Android. You will need more runtime permissions or other combinations of them, depending on the current OS version. https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#java Thats why I still look after the "perfect" permission combination ( manifest and runtime ), which make Android happy for most older and newer Android versions.
  18. @jcwhit Yes its working, but I always have a bad feeling that it's not perfect for all versions. I cannot really say, but I think it sometimes behaves odd on special devices. To use a customized template is the way to go, sometimes I think about using a 100% custom template instead of the generated one, to have a much better control about the features. Unfortunately the IDE has too many limits and causes hard-to-find errros, which could be easily fixes in a simple XML editor. The urge to add too many automation and "smartness" in the IDE is not a good thing IMHO, I would prefer the pure textual options management over the checkbox-style. I think Embarcadero should simply offer two ways for the options setting like this, maybe the UI way as-is, plus a textual way, maybe through one JSON or XML file, alternatively. This would be better integrate into CI and also easier to manage for humans and allow easier code reuse. Maybe one day Embarcadero will consider my wish list, either allow both side-by-side or control one of both ways per selection in the tools options.
  19. Rollo62

    Can you mix VCL and FMX?

    There was an old project MonkeyMixer, that was intended to do so, if that is what you need. But it is not recommended, since you will carry VCL and FMC resources in your project and make it unnecessary heavy.
  20. You could simply use Google, prefixing your search like this "delphi docwiki fmx scrollbox". This gives mostly very accurate results to docwiki in the top 10.
  21. Rollo62

    Getting FireMonkey iOS development off the ground

    We have all the same goal in mind, but Apple does its best to keep this goal as far and impossible as it could be 🙂 I'm afraid you have to work through all the docs and threads that are out there, all the time. Embarcadero has a quite good explanation of the whole process for the start, but it may break easily at every little step in every little building block involved (MemberCenter certificates/provisioning, key chain old/double provisioning files, Macos setup, Macos updates, Macos version, Platform CPU, iOS version, iOS/Macos off-sync. versions, XCode version, SDK-Versions, SDK-Missing internal parts, network/wifi connection, Transporter version, AppStore, certificate, DeviceID, Device image, PAServer, Delphi version, ...). Even XCode itself sometimes cannot resolve everything smoothly, you will have to dive deep into all those forums. It would help if you would present a failure message you've got, to get more insights. Usually the best way is to prepare a new ID, certificates, devices in the MemberCenter manually and to use XCode to prepare iOS device for development, starting an empty project on iOS, it can manage provisioning files to some degree. Once it works, usually it stays quite stable for a long time. When you leave it alone for two or three weeks, you might see some provisioning issues and need to re-establish the connection sometimes (at least I have such experience here).
  22. Rollo62

    AV with SetStyleFromFile at runtime

    Maybe that info helps too https://docwiki.embarcadero.com/RADStudio/Sydney/en/Working_with_Native_and_Custom_FireMonkey_Styles https://docwiki.embarcadero.com/RADStudio/Sydney/en/Applying_FireMonkey_Styles Does a call to ApplyStyleLookup() help ? https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Forms.TCustomForm.ApplyStyleLookup
  23. Rollo62

    How to rotate a RoundRect on click

    Ok, ok, here is a short demo maybe what you are looking for, additionally with some mouse drag-and-drop for the knob.. I would really recommend that you look into some books and the help before continuing, as well as checking out all the samples. Maybe that small demo helps for a start, but you should begin with the basics first. T465_Rotation_001.zip
  24. Rollo62

    How to rotate a RoundRect on click

    What I spot without too much looking into details: Your inside TForm7 declaration, so don't write TForm7. here private { Private declarations } public { Public declarations } //function TForm7.KnobLabelStationAngle(const AAngle : Single) : String; overload; function KnobLabelStationAngle(const AAngle : Single) : String; overload; //function TForm7.KnobLabelFreqAngle(const AAngle : Single ) : Single; overload; function KnobLabelFreqAngle(const AAngle : Single ) : Single; overload; end;
  25. Rollo62

    How to rotate a RoundRect on click

    You can simply add your function declaration and definition in the code window, similar like this: unit UMain_Form; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts ; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } function MakeANewFunction( const AParam : Single ) : String; end; var Form1: TForm1; implementation {$R *.fmx} { TForm1 } function TForm1.MakeANewFunction(const AParam: Single): String; begin if AParam > 100.0 then Result := 'Large' else if AParam >= 0.0 then Result := 'Small' else Result := 'Negative'; end; end. For these kind of questions you better look into a good, basic Delphi book, like this one from Marco Cantu.
×