

Rollo62
Members-
Content Count
1909 -
Joined
-
Last visited
-
Days Won
23
Everything posted by Rollo62
-
Any delphi components for VNC or RemoteDesktop?
Rollo62 replied to ChrisChuah's topic in General Help
Like this ? https://github.com/teppicom/RealThinClient-SDK -
Storing a large amount of elements in a 50k lines unit
Rollo62 replied to Clément's topic in Algorithms, Data Structures and Class Design
You could also consider to load that from an "official" vendors list or an API provider, during runtime. https://regauth.standards.ieee.org/standards-ra-web/pub/view.html#registries -
If the question is: "Which is better: Version A.) or B.) ( with blocking TThread.Synchronize, of course )" Then I would tend to B.), because it's more "local" and keeping the thread running until it's really finished. Version A.) has way more options to go terrible wrong, IMHO. The question is, if there would be really a use-case for A.), to leave the thread, before it's completely finished? I'm not sure if A.) would allow re-using the thread, before the Queue has completely finished and cleaned up. For example, if the Queue would block for 5 seconds, could then the thread re-used elsewhere? I doubt that it can be re-used without headaches, because the variables were captured and perhaps the whole anonymous thread space too, until it completely went out of scope. The capture mechanics must capture the thread and the lTstrings variable as well, so I would assume that both capture spaces were not 100% independent.
-
Perhaps, because there is also version 1.2.0.5+ out. https://en.delphipraxis.net/topic/4976-testinsight-12-released/?tab=comments#comment-43423
-
https://github.com/tothpaul/Delphi/blob/master/DesktopDuplicationAPI/lib/Execute.DesktopDuplicationAPI.pas
-
Yes, I can confirm that. Now it recognizes and also pays attention to the conditional defines, showing only UPartB, perfect. 👍
-
Ahh, I see. There was a disabled folder under Embarcadero/Studio/..., that why it didn't show up in bold to me, but it seems to analyze the disabled folders anyway, that's why it appeared pink in the first place. Yes, that is pretty much OK.
-
I have tested a little and found, that in somewhat complex structure scenarios, it might overlook some of the units. See example here, where UPartA.pas and UPartB.pas were missing, while the project compiles and works fine. T483_TstHclUnitDep_002.zip If there are units with the same name, would it be possible to find some more details about, where they are located. Maybe by right click, to get a list of where the absolute paths of all copies are?
-
As far as I understood, this is a new demo in the HtmlComponents Library, right? That means, when purchasing it, you can refine all colors as you wish
-
Well, now I tried to enforce one, I thought it would automatically find and mark them all somehow. Nevertheless, it's working well, when clicking on such circular part.
-
Great, now it seems to find also all units in upper and sibling folders 👍 That is a very useful tool and blazingly fast. I'm a little unsure, how to make use of the "circular reference" feature. Is there a maximal zoom factor, I cannot really get everything on one page ( nevertheless, its too small to make sense anyway).
-
<OT> I do not know most of these wordings, perhaps they come from another century. This feels very unbalanced and not equal in word choice to me, couldn't this be better to put a big warning bar over it that this comic may severely disturb the unsophisticated reader. </OT>
-
Maybe you are right. https://blog.marcocantu.com/blog/2023-09-yukonbeta-stringliterals.html
-
I never said anything different, and I dislike the ugliness in the same way. But you must agree, that the usefulness of such configurable addition of string structures would be a great thing. Now you only can do this conversion part by external tools BEFORE design time and need additional correction DURING runtime, or you convert strange structures strings DURING runtime. My point is, if Embarcadero puts a lot of effort into multi-strings, then I'm asking what main purpose this should solve ? With a little extra effort, this could be maybe usable in a lot of cases, like (JSON, HTML, XML, Python, whatsoever ). This is intended as a brain teaser, I'm not asking for any of these additions. I'm afraid, this soon will end into the same pro- and contra discussions, as for the inline variables.
-
An hommage to all Spline lovers ...
Rollo62 posted a topic in Algorithms, Data Structures and Class Design
I always liked the concept of splines a lot, and here is now the reason why https://www.youtube.com/watch?v=jvPPXbo87ds This beautifully unveils all hidden secrets about it ( Ok, not all, hopefully more to come ). -
and like, said, if you want "line" breaks, you should be able to define what kindof ( None, Space, CrLf, Lf, Cr, ...). I don't care much about the ugliness of the ''' approach, but would like to see a bit more flexibility here, to define how it shall behave. Maybe as proposal, this would limit the ugliness to an acceptable level: LStr = ''' //Default TBD A one A two A three A four '''; LStr = '''( TMultiLine.Crlf ) // Specific, maybe TMultiLine.None, TMultiLine.Space, TMultiLine.Crlf, TMultiLine.Cr, TMultiLine.lf, TMultiLine.SystemLineBreak A one A two A three A four '''; LStr = '''( TMultiLine.Custom, #0#1#2 ) // or even custom specification A one A two A three A four '''; And how about the desired behavior of leading spaces ?? Another universe. And how about the desired behavior of leading / trailing separators ?? And how about codepage conversion, oh my ?? The whole thing could be a kind of text processor IMHO, maybe like RegEx, to avoid the necessity for later re-structuring. The whole sense is to paste in a format at design time from any source format, which is immediately compiled into the final output. While at runtime you got it handed in the format and structure you intended to have, no more copy or format needed. That would be on my whishlist.
-
Cross-platform Application Help for FMX and VCL
Rollo62 replied to Alexander Halser's topic in Cross-platform
You separated the ZipHelp file management from the view, that is very good. While in the demo, the view part is done by TWebBrowser. I have not checked the code too deeply, but what stops you from using this same demo and concept on iOS or Android too ? Maybe permissions, maybe different TWebBrowser operation ? -
Then I would suggest to introduce 4 quotes, for this case when you want including CrLf: LStr = '''' A one A two A three A four ''''; I wonder at how many quotes this might end ( Default-No-line-feed = 3 quotes, CrLf = 4 quotes, Lf = 5 quotes, Cr = 6 quotes, any chinese Lf = 7 quotes, .... ) 🤔 This syntax definition might go on until 64-Bit ends.
-
Sounds like no 3rd party CAD or GIS libraries allowed ? What outcome level of graphical perfection do you expect ?
-
Cross-platform Application Help for FMX and VCL
Rollo62 replied to Alexander Halser's topic in Cross-platform
Thanks, this is a very good idea. From the explanations, I would think it is not derived from the MS-CHM Format or any others, but written from scratch. Or is this based on any existing, well-known XML format ? Maybe you took the best parts from CHM and baked them into a more modern cake ? This would be a tough task anyhow. -
@Remy LebeauThanks for pointing into that direction 👍 I use ForceQueue and my own implementation of a DelayWorker successfully for years now, but I never realized that ForceQueue has its own Delay option available too. Good to know, I will look into it how this behaves. I see a little problematic part, since it seems to keep the Delay within a TMonitor.Enter(ThreadLock); ... TMonitor.Exit(ThreadLock); loop, at a first glance. Anyway, that should be fine for simple, non-critical Delays, like in this case.
-
Enlarging the font in code view inside Delphi Alexandria 11.2 Professional
Rollo62 replied to JohnLM's topic in Delphi IDE and APIs
Come ooooon .... who needs that clunky stick-like thing from the last century -
What is the benefit of sorting the Uses clause?
Rollo62 replied to RCrandall's topic in MMX Code Explorer
Probably you misunderstood him a little, since this was his desired (world) sort order ... 🤔 -
Android PlayStore upload failed: Your Android App Bundle has an invalid signature
Rollo62 posted a topic in Cross-platform
Hi there, I have some issues with the upload of a re-signed AAB bundle. I have to confess that this is not made with Delphi, for from an external supplier, which I want to Re-Sign into our PlayStore. This worked well before, but now a new version comes always with the message above: "Your Android App Bundle has an invalid signature" I only can assume, that this is caused by KeyStore file issues, during signing, but maybe I'm completely wrong with that assumption !!! I have tried many different variants now, different case sensitivity / different version codes / different KeyStore files / and other, but the basic problem with the bundle upload stays the same. What I try to do and what I am very sure about: - Downloaded the working AAB package from PlayStore - Checked the AAB Package, which contains everything as it should - I want to re-sign this AAB, with the API-level 33 for testing, because I have no never version on-hand soon. - The original AAB release bundle is currently still working and running in the PlayStore, also for API 32/ API 33 devices - I used the very same, re-signed and re-bundled AAB Package, which refuses now already to be uploaded into a new internal testing release, see above image - While I can check that all elements should be correct, like Package-Name, Version, KeyStore fingerprints, KeyStore alias ( tested with various case sensitivity ), and other - The Versions numbers were increased correctly, and everything seems well in place, as seen in the code below - When comparing the KeyStore fingerprints from the PlayStore and re-signed AAB, they were both 1:1 same I have no more idea, how to get this uploaded then, maybe somebody has a clue or spots some issues in the code below. Here were the changes made, to the original package: ( marked by <== HERE: ) element { namespace_declaration { prefix: "android" uri: "http://schemas.android.com/apk/res/android" source { line_number: 2 } } name: "manifest" attribute { name: "package" value: "com.Abcdcef.XyzAppName" //<== HERE: This is correctly set in final AAB } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "versionCode" value: "1234" //<== HERE: This is correctly set in final AAB source { line_number: 2 } resource_id: 16843291 compiled_item { prim { int_decimal_value: 6 } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "versionName" value: "1.0.66" resource_id: 16843292 } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "compileSdkVersion" value: "30" source { line_number: 2 } resource_id: 16844146 compiled_item { prim { int_decimal_value: 30 } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "compileSdkVersionCodename" value: "11" resource_id: 16844147 } attribute { name: "platformBuildVersionCode" value: "1234" //<== HERE: This is correctly set in final AAB source { line_number: 2 } compiled_item { prim { int_decimal_value: 6 } } } attribute { name: "platformBuildVersionName" value: "1.2.34" //<== HERE: This is correctly set in final AAB } child { text: "\n\n " source { line_number: 5 column_number: 33 } } child { element { name: "uses-sdk" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "minSdkVersion" value: "15" source { line_number: 7 } resource_id: 16843276 compiled_item { prim { int_decimal_value: 15 } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "targetSdkVersion" value: "33" //<== HERE: This is correctly set in final AAB source { line_number: 7 } resource_id: 16843376 compiled_item { prim { int_decimal_value: 30 } } } } source { line_number: 7 column_number: 4 } } child { text: "\n\n " source { line_number: 9 column_number: 40 } } child { element { name: "uses-permission" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.permission.BLUETOOTH" resource_id: 16842755 } } source { line_number: 11 column_number: 4 } } child { text: "\n " source { line_number: 11 column_number: 67 } } child { element { name: "uses-permission" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.permission.BLUETOOTH_ADMIN" resource_id: 16842755 } } source { line_number: 12 column_number: 4 } } child { text: "\n " source { line_number: 12 column_number: 73 } } child { element { name: "uses-permission" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.permission.INTERNET" resource_id: 16842755 } } source { line_number: 13 column_number: 4 } } child { text: "\n " source { line_number: 13 column_number: 66 } } child { element { name: "uses-permission" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.permission.READ_PHONE_STATE" resource_id: 16842755 } } source { line_number: 14 column_number: 4 } } child { text: "\n\n " source { line_number: 14 column_number: 74 } } child { element { name: "uses-permission-sdk-23" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.permission.ACCESS_COARSE_LOCATION" resource_id: 16842755 } } source { line_number: 16 column_number: 4 } } child { text: "\n " source { line_number: 16 column_number: 87 } } child { element { name: "uses-permission-sdk-23" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.permission.ACCESS_FINE_LOCATION" resource_id: 16842755 } } source { line_number: 17 column_number: 4 } } child { text: "\n\n " source { line_number: 17 column_number: 85 } } child { element { name: "uses-feature" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.hardware.bluetooth_le" resource_id: 16842755 } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "required" value: "true" source { line_number: 19 } resource_id: 16843406 compiled_item { prim { boolean_value: true } } } } source { line_number: 19 column_number: 4 } } child { text: "\n\n " source { line_number: 21 column_number: 34 } } child { element { name: "application" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "allowBackup" value: "true" source { line_number: 23 } resource_id: 16843392 compiled_item { prim { boolean_value: true } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "appComponentFactory" value: "androidx.core.app.CoreComponentFactory" resource_id: 16844154 } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "icon" value: "@drawable/app_icon" source { line_number: 23 } resource_id: 16842754 compiled_item { ref { id: 2131099732 name: "drawable/app_icon" } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "label" value: "@string/app_name" source { line_number: 23 } resource_id: 16842753 compiled_item { ref { id: 2131427369 name: "string/app_name" } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "theme" value: "@style/AppTheme" source { line_number: 23 } resource_id: 16842752 compiled_item { ref { id: 2131492870 name: "style/AppTheme" } } } child { text: "\n " source { line_number: 28 column_number: 41 } } child { element { name: "activity" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "label" value: "@string/app_name" source { line_number: 29 } resource_id: 16842753 compiled_item { ref { id: 2131427369 name: "string/app_name" } } } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "com.Abcdcef.XyzAppName.PSMainActivity" resource_id: 16842755 } attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "screenOrientation" value: "portrait" source { line_number: 29 } resource_id: 16842782 compiled_item { prim { int_decimal_value: 1 } } } child { text: "\n " source { line_number: 32 column_number: 50 } } child { element { name: "intent-filter" child { text: "\n " source { line_number: 33 column_number: 27 } } child { element { name: "action" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.intent.action.MAIN" resource_id: 16842755 } } source { line_number: 34 column_number: 16 } } child { text: "\n\n " source { line_number: 34 column_number: 68 } } child { element { name: "category" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "android.intent.category.LAUNCHER" resource_id: 16842755 } } source { line_number: 36 column_number: 16 } } child { text: "\n " source { line_number: 36 column_number: 76 } } } source { line_number: 33 column_number: 12 } } child { text: "\n " source { line_number: 37 column_number: 28 } } } source { line_number: 29 column_number: 8 } } child { text: "\n\n " source { line_number: 38 column_number: 19 } } child { element { name: "service" attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" value: "com.pairlink.normalLib.BLEDeviceManager" resource_id: 16842755 } } source { line_number: 40 column_number: 8 } } child { text: "\n " source { line_number: 40 column_number: 74 } } } source { line_number: 23 column_number: 4 } } child { text: "\n\n" source { line_number: 41 column_number: 18 } } } source { line_number: 2 } -
Android PlayStore upload failed: Your Android App Bundle has an invalid signature
Rollo62 replied to Rollo62's topic in Cross-platform
Oh my, like always A minute after this post, I found the issue: This problem was caused by an older command-line batch file, which still referred to JarSigner, and not the new ApkSigner, as required since a while.