-
Content Count
42 -
Joined
-
Last visited
Everything posted by domus
-
Have the same problem. Found a solution to this?
-
Hi, I'm using TBitmap.LoadFromStream in a background thread (TTask.Run), but it appears to be blocking the main thread (and UI), since I see pauses in execution when this function is executing. It's loading a PNG into a TBitmap. There is absolutely no interaction needed with the UI. The bitmap is not linked to any component. If this function needs to synchronize with the main thread for a part of its algorithm, is there an alternative one available that doesn't? Thx!
-
Imagine that meeting. Let's implement: TList: indefinite growth allowed; TStack: indefinite growth allowed; TQueue: indefinite growth allowed; TQueue<T>: indefinite growth allowed, but I propose we use "Push" and "Pop" instead of "Enqueue" and "Dequeue"! TThreadList: indefinite growth allowed; TThreadedQueue: STOP! We'll not allow indefinite growth! It's all up to the user now. Also, We'll be pushing and popping, not enqueueing and dequeueing. Also, unlike "ThreadList," we'll call this one "ThreadEDQueue." "That'll keep everyone on their toes!" Happy New Year!
-
I wrote "dynamically," by meant "automatically." My bad. When I tracked QueueSize when starting the debugging, I saw it grow along with the pushing of items, and by having made the mistake of believing the documentation, I thought the queue's size was growing automatically (along with the items being pushed) and dismissed it as being a possible cause. So I went down all the wrong rabbit holes. I know about Grow. I assumed, at first, that it entailed the reserved space for the queue before it automatically grew along with the pushed items, analogous to TList's Capacity property. But it doesn't grow automatically, of course, just to make life a tad more exciting. Cheers! Dom
-
Hello, Remy. You're absolutely right. I was assuming TThreadedQueue had dynamic size, like TQueue, but it's a fixed-capicity ring buffer, apparently. As an aside, do you know why its QueueSize property is returning the amount of items in the queue, contrary to the documentation, stating it returns the fixed size of the queue? (not that it matters, since I can keep the fixed size in a separate parameter, but it's misleading) Also, why are they using PushItem instead of Enqueue and PopItem instead of Dequeue? And, as a final question, why isn't there an option to make it grow dynamically? None of these are questions you're supposed to answer, of course, but just wondering... Thanks for making me dig deeper into this. Cheers, Dom
-
My goodness. The thing that was blocking everything was a TThreadedQueue. Days of debugging, just to find out this thing is absolutely unreliable inside a TTask (in the sense that it absolutely blocks the main thread when popping an item).
-
After quite a bit of back and forth with the o1 GPT model, it suggested using TBitmapSurface directly, like TBitmapCodecManager.LoadFromStream(strm, Surf) (where strm is the PNG stream), which it claims uses only the CPU, steering clear from any blocking caused by GPU access, but having tried that, I see no difference. Still on Delphi 11, but I could try Skia anyway. It's just that the last time I tried it, a while back, it seemed slower than the native FMX library (using D2D). Thanks!
-
Indeed, that's what I'm trying to find out. If it does, it kind of defeats the purpose of having it run in the background.
-
Does Graphics32 support FMX? Just stumbled upon Image32. Anyone know how it handles TBitmap streaming...?
-
OpenAI have introduced something that seems quite useful in getting a consistent, structured reply from ChatGPT: Structured Outputs. Is there a way to use it in Delphi, without reverting to Python? Just asking in case someone has already gone through the research, and slightly lazy on my part, admitted. Cheers, Dom
-
While the documentation site is down, would anyone know why it's a problem using an Int64 with an Sqlite database? Int64 values written to Sqlite Integer fields seem to be problematic (truncated to 32-bits). Manually changing all field properties to .AsLargeint, on the other hand, throws a "type mismatch" exception at application startup. All Sqlite integer fields are supposed to support 64-bit values. (don't bother, solved by manually using BIGINT in creation of table)
-
Why is it a problem using an Int64 with an Sqlite database?
domus replied to domus's topic in General Help
Just FireDAC, in Windows. But problem was solved in the mean time. Cheers! Dom -
Does WebView2 function when inside an app launched with SW_HIDE command?
domus posted a topic in General Help
(had the audacity to ask this in StackOverflow, which was a mistake, so trying here) I know, a very esoteric and specific question, but I'm spending ages trying to figure out why none of the navigation events get triggered when I'm trying to get a web page capture inside an app that was launched with ShellExecute(0, 'open', PChar('WebpageFetcher.exe'), nil, nil, SW_HIDE), while they do get triggered when using SW_SHOW. Tried using both WVBrowser1.CreateBrowser(WVWindowParent1.Handle) and WVBrowser1.CreateWindowlessBrowser(WVWindowParent1.Handle). Both work perfectly when using SW_SHOW, but I'm guessing that because the main form is hidden when using SW_HIDE, the OnNavigationCompleted and OnCapturePreviewCompleted are not triggered. However, OnDOMContentLoaded does get triggered in all cases. Overlooking something very basic, I'm sure. I don't need to see any form, just get the capture. Might it be that, when using SW_HIDE, the app doesn't have a proper messaging loop running and these events don't get propagated...? If anyone has any pointers, appreciated. -
Does WebView2 function when inside an app launched with SW_HIDE command?
domus replied to domus's topic in General Help
Odd. Maybe the parent was temporarily visible...? Maybe another mechanism involved. Or I should just update the library. -
Does WebView2 function when inside an app launched with SW_HIDE command?
domus replied to domus's topic in General Help
Can't find that method for WebView2. Deprecated...? -
Does WebView2 function when inside an app launched with SW_HIDE command?
domus replied to domus's topic in General Help
That worked. Apparently it's a known issue, causing many headaches: https://weblog.west-wind.com/posts/2022/Jul/14/Fighting-WebView2-Visibility-on-Initialization Many thanks! Saved me a lot of time! -
Does WebView2 function when inside an app launched with SW_HIDE command?
domus replied to domus's topic in General Help
That helps a lot and was more or less my inkling. I'm proceeding in that direction now. It's just a tad frustrating that it all worked fine, until that very last bit of changing SW_SHOW into SW_HIDE. What SO is concerned, a hundred years ago, when it took off, you could start out asking a question and then (collaboratively) polish it over time, until it became something you could put inside Encyclopedia Britannica. Today, if your question doesn't immediately resemble an Encyclopedia Britannica entry, you have to put on donkey ears and sit in the corner for ten minutes (or, in SO terms, get downvoted). Discouraging. -
I have tried to find this online, but was unsuccessful. Would anyone know if it's allowed to install a Community Edition of Delphi on two separate PCs simultaneously? (PC and laptop) Many thanks. Cheers, Dom
-
So, it was in the EULA and I managed to not see that. Thanks again, Remy!
-
Way for external app to jump to a unit and position inside the IDE?
domus posted a topic in Delphi IDE and APIs
Would anyone know of a way for an external app to jump to a certain unit and position inside the IDE? Like, unit "Main.pas", line 100. Many thanks for pointers. -
Way for external app to jump to a unit and position inside the IDE?
domus replied to domus's topic in Delphi IDE and APIs
Excellent approach. I'll give it a try. Thanks! -
Way for external app to jump to a unit and position inside the IDE?
domus replied to domus's topic in Delphi IDE and APIs
That's the problem. I'd need to write a plugin that listens to the external app... Thanks and cheers. -
Way for external app to jump to a unit and position inside the IDE?
domus replied to domus's topic in Delphi IDE and APIs
That's indeed a way to get me started. Totally forgot about ShellExecute being an option here. Thanks for that! If anyone would know of a way to navigate to a certain procedure or class, or line number, I'd be grateful to receive that knowledge. But it's probably all documented somewhere in the Tools API documentation and I should just resort to reading it. -
Bitmaps regularly disappearing from Rectangle components
domus posted a topic in Delphi IDE and APIs
In my FMX forms, I regularly have the issue that all bitmaps have vanished from my TRectangles (Fill.Bitmap property). The odd thing is, that the correct bitmap sizes are still displayed in the property editor, but the bitmaps, themselves, are gone. Is a bit annoying to have to fish them all back from different places all the time. Is this a known issue in 10.4? Thx! -
Bitmaps regularly disappearing from Rectangle components
domus replied to domus's topic in Delphi IDE and APIs
Just happened again. In text mode, I thought the form looked perfectly defined, with all bitmap data present, but at a closer look, the bitmap data was a lot smaller than should be. When switching back to the form, it's all gone. Also when compiling and running. Odd.