Jump to content

Rollo62

Members
  • Content Count

    1945
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by Rollo62

  1. Well I said it should be possible, I didn't say it will be easy 🙂 https://en.wikipedia.org/wiki/BMP_file_format#DIBs_in_memory https://upload.wikimedia.org/wikipedia/commons/7/75/BMPfileFormat.svg The PixelArray should be more or less linear. It depends how much pressure you have from your client, if its worth it, or if you better purchase a larger PC. The task sound a little, as if it is a kind of control system, where the purchase option is out of reach. Anyway, I know not much about the task yet, so also a kind of pre-conversion of those images into a better manageable "custom pixel-array" could be possible, from where you can more easy pan and zoom, and covert back into a real TBitmaps then, from a virtual viewport moving over a memory mapped file. Ok, if all this is nonsense, then I'm looking forward to see better proposals from others now.
  2. Rollo62

    Unit dependency viwer

    Not sure if I get your point, but you can de-select nodes easily. Isn't that enough?
  3. Yes, the OP is concerned about the in-memory use, of his many bitmaps at the same time in his app, which were already decompressed into TBitmaps, as far as I understand him right. These TBitmaps might work with a Paged memory mapped file for certain operations, to save in-memory space, what is so wrong to think about that? A Linear, decompressed Bitmap-File should be possible to handle, without loading it completely into memory first. Yes it might be terrible slow, but the images were probably more or less statically shown only, with very little operations to zoom and pan.
  4. Because, if you Zoom or only want to show parts of the file, you eventually don't need to load it all. Usually a full view of such large file is way too condensed anyway, to be viewed correctly, so you only need to show the reduced data to the user until he zooms in. Why is Google Maps not showing always the whole earth, but only tiles of it? 🤔
  5. Rollo62

    P4D Android visual component

    Maybe that works for you? https://blogs.embarcadero.com/python-on-android-with-delphi-fmx/
  6. Perhaps its possible to read and show the images partly, as memory mapped files, depending on the Zom factor. See this as example for large text files, from jaenicke in the german DP. https://www.delphipraxis.net/151898-sj-mmf-file-reader-0-2-schneller-textdatei-reader.html https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-mapviewoffile
  7. Rollo62

    Notice on C++ Webinar today

    Hi there, I'm quite confused on the starting time of the C++ Webinar today. It shows 10:00 CST in the EMail note, which should be 17:00 in Germany. ... But it also tells me when joining Goto: 5 hours to go .... This would be 16:00 in Germany. I actually believe the Goto schedules, which should be correct, but something seems weird here. 🤔
  8. Rollo62

    Clipboard history

    It works on my Win 10 and Win 11 systems, although I confess that I never used this before. AFAIK there are methods to access the ClipboardHistory under Windows, which are implemented in WinRT only. Never used that either, mainly because the WinRT requirement.
  9. Rollo62

    Delphi for Mobile Applications

    Web app? Then TMS WebCore this is maybe intersting too https://www.youtube.com/watch?v=Az7X6jjDRd0&list=PLp3eFyNKVPpvCFj7lLTZjOoIjeH9pcdDA
  10. Rollo62

    Delphi for Mobile Applications

    Yes, it moves between stable-unstable-stable over the years. But I can say also, that this is mainly because of external effects from Apple/Google, while Firemonkey tries its best to keep up. I have often seen original XCode and AndroidStudio developers, struggling with the same problems we saw in Delphi, only that those IDE's were maintained more eagerly. And to keep in mind, mobile development is way different to traditional desktop development, I fell into that trap too.
  11. Rollo62

    Delphi for Mobile Applications

    https://github.com/FMXExpress/Cross-Platform-Samples https://github.com/FMXExpress/CPP-Cross-Platform-Samples https://www.youtube.com/@QuarkCube/videos
  12. Rollo62

    Buying a mini pc to install Delphi

    True, most of my machines get a 2nd life, afther their pre-life as Workstation. As Build-Server, other server, separate, small workstation for web-development, or the like, if they were no more good enough as main workstation. With Mac thats not so easy.
  13. You could fumble around with thwe RestDebugger tool, integrated in Delphi Tools https://docwiki.embarcadero.com/RADStudio/Athens/en/REST_Debugger_Tool When you're happy with this, you can generate and save the Delphi-Components with the right setup, to use 1:1 in Delphi.
  14. Rollo62

    Buying a mini pc to install Delphi

    Yes they do, but I can not use my older MacBook for current development any more. For text editzors and web-Browsing it will be fine. I would recomment to use the latest, affordable Mac Mini with M2/3/4, since clearly this Apple Silicon is Apples future. No one knows, how long Intel will still be supported by Apple at all, I'm afraid my next major update will stuck on the old OS on Intel. They like to hard-cut and freeze older OS, even after a few years after purchase, which brings us back to the "Apple TAX". Not only their products have an extreme Price-Tag for the performance, they also enforce tp use the whole "ecosystem" and rebuy such maching after a few years. Now Windows is doing similar, after decades of backwards compatibilty, with Win10 to Win11, and the world complains massively. But Apple TAX is maybe the wrong expression, under these considerations, Apple MAFIA would hit it better It all depends on what you are using it for, if for development I would be careful.
  15. Rollo62

    Buying a mini pc to install Delphi

    It controls the mouse and you can transparently switch mouse and keyboard from one PC to the other, just by moving the mouse into the right viewport. That means you need 1x mouse and keyboard, but 2x display, one for each PC. That way you operate both machines at the same time, at least it feels like this.
  16. Rollo62

    Buying a mini pc to install Delphi

    This sorts it out for me
  17. Rollo62

    Buying a mini pc to install Delphi

    You could check https://symless.com/synergy Works like a charm for me, at fair costs
  18. Rollo62

    Copy bitmap from TSkSVG to TImage

    Maybe that can help? ( but you have to learn German first 🙂 ) https://www.delphipraxis.net/213780-bild-auf-timage-mit-svg-grafiken-zusammenfuehren-skia.html
  19. Rollo62

    Speech to text translation (iOS)

    https://github.com/DelphiWorlds/Kastri/tree/master/Demos/SpeechRecognition
  20. Rollo62

    Putting Delphi Application inside web page

    That looks interesting, they seem to have fair conditions. What only puzzles me is, that they have not even a real snd proper impress & terms page, even if they were probably an EU company. At least I have not found Distribution and technical support for Winflector: OTC S.A. Krakow Poland OTC S.A. ul. Skotnicka 189, 30-394 Cracow, Poland Telephone: +48 12 626 36 36 WWW: www.otc.pl E-mail information: office@winflector.com Technical support: support@winflector.com Find us on Facebook: WinflectorCom Are they developer or distributor, who is the developer, who owns the software? That already gives a lot of pre-front negative impression and usually prevents me from even tests soutione like this.
  21. Rollo62

    Putting Delphi Application inside web page

    Not sure if it meets your "app in a website" needs, but there is also TMS WebCore ... https://www.tmssoftware.com/site/tmswebcore.asp
  22. Try this, untested uses System.Rtti, System.SysUtils, Vcl.StdCtrls; procedure TForm1.Button1Click(Sender: TObject); var RttiContext: TRttiContext; LType: TRttiType; ACaretPositionProp: TRttiProperty; Val: TValue; CaretPos: TPoint; begin RttiContext := TRttiContext.Create; try LType := RttiContext.GetType(TMemo.ClassType); ACaretPositionProp := LType.GetProperty('CaretPosition'); if Assigned(ACaretPositionProp) then begin Val := ACaretPositionProp.GetValue(Memo1); if Val.IsType<TPoint> then // Check if the value is of type TPoint (which is compatible with TCaretPosition) begin CaretPos := Val.AsType<TPoint>; ShowMessage(Format('Caret Position: X=%d, Y=%d', [CaretPos.X, CaretPos.Y])); end else ShowMessage('CaretPosition property is not of type TPoint.'); end else ShowMessage('CaretPosition property not found.'); finally RttiContext.Free; end; end;
  23. I like to separate different aspects of stuff in completely different units, which where combined then in a wrapper unit, like so unit DecideWhichUnitInPlace; interface uses // This is the only place where separation takes place {$IFDEF UNIT_TESTING} UnitWithTests, {$ELSE } UnitWithoutTests {$ENDIF } ; //Even separate classes and interfaces like that, not only functions type // This can point to completely different, but cleanly separated versions, depending on defines {$IFDEF UNIT_TESTING} TMyType = UnitWithTests.TMyType; {$ELSE } TMyType = UnitWithoutTests.TMyType; {$ENDIF } ; implementation Then no defines are needed in those units at all unit UnitWithTest; interface uses Whateever, isNecesssary; function AlwaysAvailable(): TSomeType; function NotAlwaysAvaialble(): TSomeOtherType; type TMyType = class function AlwaysAvailable(): TSomeType; function NotAlwaysAvaialble(): TSomeOtherType; end implementation uses Other, Units; function AlwaysAvailable(): TSomeType; begin // implementation here end; function NotAlwaysAvaialble(): TSomeOtherType; begin // implementation here end; function TMyType.AlwaysAvailable(): TSomeType; begin // call AlwaysAvailable; end; function TMyType.NotAlwaysAvaialble(): TSomeOtherType; begin // call NotAlwaysAvaialble; end; end. This is not the beest example to explain this and it depends highly on what you really want to achieve. Maybe it gives you some helpful thoughts. unit UnitWithoutTest; interface uses Whateever; function AlwaysAvailable(): TSomeType; //function NotAlwaysAvaialble(): TSomeOtherType; type TMyType = class function AlwaysAvailable(): TSomeType; function NotAlwaysAvaialble(): TSomeOtherType; end implementation uses Other, Units; function AlwaysAvailable(): TSomeType; begin // implementation here end; //function NotAlwaysAvaialble(): TSomeOtherType; //begin // // NO implementation here, or completely removed //end; function TMyType.AlwaysAvailable(): TSomeType; begin // call AlwaysAvailable; end; function TMyType.NotAlwaysAvaialble(): TSomeOtherType; begin // call, ignore or mock, when function is NOT available //NotAlwaysAvaialble; end;
  24. Hi there, I'm not asking how to make it default, this I did already. Every time when dealing with the "Standard Edit.Text" on "Standard Button's", I get to the point where I have and want to enable Edit.TextSettings.WordWrap. I'm wondering, what could be the original reasoning for the decision, to keep wordwrap initially inactive. Shall I keep WordWrap alway Active ? Pro's - Wrapping text in a button is in 95% of the cases a style "bug" and not wanted: The philosophy is "Prefer "info over style" - Under normal conditions, active wordwrap has no negative impact on the display - With normal, 1 line of text, no truncation occurs - Too long text can be more safely identified, more information can be seen - The wordwrap takes place automatically, by the detection of available space - In TButton's default settings, the button can usually display 2 lines of text reasonable well - Multiline text can show more info, even if parts of the text may be invisible - No ability to control what is main the focus of the text to be show - Best use of available display space, to maximize information - Too long texts can be easily spotted by the developer, makes it easier to fix Con's - Wrapping text in a button is in 95% of the cases a style "bug" and not wanted: The philosophy is "Prefer "style over info" - Text display is looking ugly when it wraps, it's formatted and styled - Perhaps slight performance issues, to detect line counts, and so on - The wrap situation cannot be controlled manually, if inactive it just never wrap's - Multiline text can lead to keep the start of the sentence out of the view, showing the middle of the whole text - No ability to control what is main the focus of the text to be show - Some implementation with ellipsis ( tuncated text... ) even reduce the available display space by additional ... characters - Truncated texts can be hardly spotted by the developer, not so easy to fix I wonder, if there is any good reason not to activate wordwrap in any case? Please let me know your opinion, and if you know cases, where the wordwrap is a no-go.
  25. Yes, sorry, I should have made that clear. But my question is general. Same is for example VCL.TLabel, actually I'm not sure if wordwrap is active or not, but assume so. Perhaps these settings can be well explained by "history", in the old days it was a more massive mess, to produce multi-line thingies. Nowadays, with 8K screens its better. The "Intended to be one line" answer doesn't really explains a lot. Like said, also the Controls do nicely show Single-Line, while WordWrap on, so it doesn't really to foreced to 1-Line. The problem begins, if the controls receive unsuitable texts or dimensions, or suddenly foreign translation, then the issue gets visible. Why prefer not to handle such issues gracefully?
×