Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 09/23/21 in all areas

  1. Anders Melander

    DevExpress PDF Viewer

    I'm sorry about that, although I don't quite understand why you find it offensive. I'm sure Joe knows his stuff but appearance does matter. I actually looked at the site trying to find more information about the library but eventually gave up. Now that I look at it again I can see that what I thought was just more bullet points is actually links to sub pages. After that I had to read through all the FAQ to deduce that it's not a native Delphi library. If I had actually been looking to buy a PDF library (I'm not since I have a DevExpress subscription) I would have taken one look at that page and quickly moved on. Joe or not.
  2. Joseph MItzen

    Missing The Old Forums

    I won't go into the whole story, but I once had an online exchange with David Intersimone, then VP of Developer Relations, about a survey he'd run and tried to explain to him how it was only going to tell him what he wanted to hear and not what he needed to know. Despite my being a professional data analyst at the time, it felt like he was trying to lecture me on how surveys worked. I tried to explain that when you survey the first 500 people to buy a new release, you're missing those who chose not to upgrade because of bugs, price or features, which were the three biggest complaints at the time (still are). Of course, it also missed those who had already opted to leave for another platform. That's when David gave me insight into the thought processes at Embarcadero and I knew there was no helping them... he wrote "People leave Delphi for C#; people leave C# for Delphi; so we just keep on doing what we're doing." In short, they're like a black box whose outputs are not influenced by the inputs. This survey asked questions like (approximately) "What's the most awesome thing you can think of about Delphi?" and nothing about what's your biggest problem with it. Answers to this question (from the biggest fans who were quickest to order the upgrade) were used within days by the marketing team in a press release and a blog entry, showing the survey was nothing more than quote mining for marketing. Marco Cantu tried to claim that they have lots of surveys - dozens, hundreds, thousands! - where they ask all the questions I suggested and more, although no one seems to have ever received an invitation to take one of these alleged surveys. In another instance a person talked about being a subject domain expert but no Delphi experience who was hired by a Delphi shop. They took him to... he called it a user group meeting, but it sounded like one of the old World Tour events. I'll skip over his general impressions, but he was unsettled by the small number and age of the participants. He brought this up after the meeting with the Embarcadero employee who was there and said that the employee responded to him: "We don't like for new people to show up at these meetings; they're filled with angry middle-aged white men". I've got a few more examples I won't go into, but I'll say I've seen and heard enough to be convinced that for the *majority* of Embarcadero employees, the concerns of customers aren't really high on their agenda (David Millington being a notable exception). When two of the people who actually develop Delphi showed up in the old forums one day and someone brought up a critical bug they were experiencing and not getting help with, one of them wrote: "See - this is why we don't like to come here." Tony de la Llama, who was in sales, showed up in the forums once and he was a nice, friendly guy. When someone told him about a problem they were having, he expressed personal sorrow over their experience and promised to escalate the issue personally so they'd get a fix. He said we were all swell people and he really enjoyed interacting with the users and planned on doing it again. Days later the EMBT CEO blamed Tony personally for low Delphi sales (I was told this by another EMBT employee) and fired him right before Christmas. 😞 So anyway, they did not have a history of listening to their customers, rarely showed up in the forum and when they did it often didn't go well. And the one person who really listened got fired. Hence I don't think it's that great a loss. (Again, I want to give David Millington credit for being one of the few EMBT employees to visit forums, including Reddit, and actually offer help to users with problems and listen to their suggestions and feedback. He's the only one I've seen do so since Mr. de la Llama.)
  3. Anders Melander

    DevExpress PDF Viewer

    I hope Joe is better at coding than designing web sites 🙂
  4. That notice has been in the documentation since XE4. All ANSI types (P/AnsiChar, AnsiString/(N), ShortString) were disabled in the NEXTGEN mobile compilers in XE3. Under NEXTGEN, UTF8String and RawByteString were re-enabled in 10.1 Berlin, and then the rest of the ANSI types were re-enabled in 10.4 Sydney when NEXTGEN was dropped completely so mobile platforms now match desktop platforms in terms of language features. Looks like the ShortString documentation has not been updated yet to reflect that. Yes. Only in XE3 through 10.3. In 10.4 onward, ShortString can be used on mobile. No. Because ALL ANSI types were initially eliminated, as mobile platforms are Unicode-based. Then the types slowly started being re-introduced as needs arose, until eventually Embarcadero decided that having separate compiler architectures just wasn't working out. Hardly.
  5. Marketing strategy? Really? Just because you disagree with the decision to deprecate it doesn't make it a stupid decision, driven by "marketing". The deprecation of "object" was also controversial but that wasn't driven by marketing either. I'm pretty sure management, marketing and sales couldn't care less about these things.
  6. Avoid using short strings. Short string is for backwards compatibility only (typically for older desktop apps migrated to the new). They are ANSI based and do not support Unicode natively, and have been deprecated since 2009 when the Unicode string format was made king of the hill. Byte still is a useful number format when you don't need a large range,
  7. FPiette

    How to Change Comport Name?

    May be this StackOverflow article would help?
  8. Alexander Elagin

    OLE structured storage library replacement for Plasmatech

    I think that not much has changed in the structured storage implementation in the last two decades. If the library you are using works (and you have the sources) it will work until MS drops the OLE storage (or CFB, as they call it now) support. Anyway, it is all based on a simple set of COM interfaces (IStorage) and it would be easy to use them directly or write a simple wrapper if needed. Documentation for IStorage compound file implementation
  9. Anders Melander

    Missing The Old Forums

    I too miss Rudy, but to be honest he was also the main reason I stopped participating in the old fora; So many interesting topics deteriorated into endless yes, no, yes, no, discussions. That and the misuse of moderation power that were going on killed my interest.
  10. Remy Lebeau

    How to connect to office 365 using proxy server

    <ARG!> I just now noticed that you are connecting to Office 365 on port 993. That is an IMPLICIT TLS port. But, you are not using any TLS settings on your TIdIMAP4 at all! Rather than assigning a TIdIOHandlerStack component to the TIdIMAP4.IOHandler property, you need to assign a TIdSSLIOHandlerSocketBase-derived component instead, like TIdSSLIOHandlerSocketOpenSSL (TIdSSLIOHandlerSocketBase derives from TIdIOHandlerStack and thus also has the TransparentProxy property). And then set the TIdIMAP4.UseTLS property to utUseImplicitTLS.
  11. Joseph MItzen

    Missing The Old Forums

    A few weeks ago I was thinking to myself... boy, do I miss Rudy Velthuis. There's so much I wish I could talk with him about. Then I did some googling and found some archived discussions. I found Rudy and the old, evil version of Nick Hodges arguing that it would be of no benefit at all for Embarcadero to allow users to submit code fixes, also insisting that the Delphi test cases were vast and robust. I was there too, pointing out how useful user-submitted patches have been to open source software, citing the Linux kernel. Then Rudy replied to me that if he had his way, even the Linux kernel wouldn't be allowed to accept code submissions. I drew a few conclusions: Do I still miss Rudy? YES. Was Rudy a very wise and intelligent person to converse with? Yes. Did I enjoy discussing things with Rudy? Yes. Did I enjoy discussing things with Rudy when he got like that? No. It was the toxic environment in the forums that brought people to bombast, rhetoric, refusal to concede points, personal attacks, etc. Do I miss the old forum? NO. Here people can discuss things intelligently without getting nasty or defending a lost cause to the point of being ridiculous. I mean, here we talk about type inference... back on the old forum, I brought up the subject as one of the must-have features for Delphi as soon as possible and one person insisted that type inference was, and I quote, "just the compiler guessing". He continued to insist this after I explained the Handley-Millner Type Inference Algorithm to him, along with its mathematical guarantee of correctness. Then he declared that "a compiler should only do one thing" and type inference would be two things, so it shouldn't be part of the compiler. Another poster went on and on about rejecting modern features in Delphi. Someone asked how they felt about the Delphi string type and they replied that they don't use it where possible, only PChars (!!!). Even Rudy had to concede that this was detrimental and extreme. So... many... weird... conversations there. This place is so much more... sane... in comparison.
  12. Rinzwind

    C++ Code Insight in 10.4.2

    How can they release a product where a main feature just isn't working. I was utterly surprised finding that out in the community edition. Just seems to mean noone except a few old customers is using it? Just a plain empty vcl project won't work except when you switch to the classic compiler. And it seems in 11 it is still not working and super slow at that. What are they thinking?
  13. HTMLValidator.com

    C++ Code Insight in 10.4.2

    Every time I update I hold out a little hope that Code Insight will start working again for my real-world C++ projects. Unfortunately, this hasn't happened in years. When I hit Ctrl+Space, it very briefly changes the mouse pointer but does nothing. In the "Projects" Tool Window, there's a "Code Insight Activity" bar. What the heck is that suppose to do? Mine seems to always show "CodeInsight: Stopped". Is there a link that explains everything to check for in order to get Code Insight to work in C++? For example, all the requirements for it to work... and things to avoid that might break it. And it would be extremely useful if there was some way to see any messages that "Code Insight" might generating as to why it is failing. Also, if anyone has a real-world C++ project and Code Insight actually works for you, then please let me know. I'm curious if it works for anything other than tiny demo apps.
  14. Der schöne Günther

    Delphi 11 Windows XP compatibility tweak

    There's too many "should run" in there. Neither the IDE, nor the produced Win32 binaries are intended to be run on Windows XP, MS-DOS or Enigma. Is there a guarantee it will run on those platforms, just by not importing GetTickCount64? That just doesn't sound safe enough to promise my customers the same.
  15. HTMLValidator.com

    C++ Code Insight in 10.4.2

    I "played" with it briefly but had to move on to other things. Never got it to work. Maybe I'll try again and spend more time on it when I eventually upgrade to Rad Studio 11... or by some "magic" maybe they will fix C++ Code Insight in 11 and I won't have to waste time on it..
  16. Lajos Juhász

    How are you handling SVG images?

    You can also try https://github.com/EtheaDev/SVGIconImageList
  17. dwrbudr

    Skia4Delphi

    The skottie player demo using check.json doesn't correctly draw the image. See the black rugged edge border when the circle is being painted. Instead of using TWICBitmap, I've switched to 32bit TBitmap and created the TSKSurface like this: LSurface := TSKSurface.MakeRasterDirect(TSKImageInfo.Create( fBitmap.Width, fBitmap.Height, TSKColorType.BGRA8888), fBitmap.ScanLine[fBitmap.Height - 1], BytesPerScanLine(fBitmap.Width, 32, 32)); LSurface.Canvas.Clear(TAlphaColors.Null); FAnimation.Render(LSurface.Canvas, fDestRect); //flip the image since the DIB is bottom-up orientaded StretchBlt(fBitmap.Canvas.Handle, 0, 0, fBitmap.Width, fBitmap.Height, fBitmap.Canvas.Handle, 0, fBitmap.Height - 1, fBitmap.Width, -fBitmap.Height, SRCCOPY); Now all seem OK and the border is not rugged, not sure whtat's wrong with TWICBitmap. Check the border of the images below.
  18. And I correct the timings. As someone wrote, they vary a lot with circumstances. But the relativities are a reasonable indication. SEARCH: mode 32 bit 64 bit search System.pos NextStrPos System.pos NextStrPos String 550 250 650 135 ANSIstring 530 460 3.500 65 REPLACE: mode 32 bit 64 bit replace SysUtils. StringReplace StrReplace SysUtils. StringReplace StrReplace String 6.500 1.050 6.000 800 ANSIstring 7.400 900 7.000 650
  19. HTMLValidator.com

    C++ Code Insight in 10.4.2

    Thanks.... I'll start there and see if I can finally get it to work. If anyone else has any other ideas or resources then please share. Also, I'm still interested if it works for anyone here for any "real world" project.
  20. mael

    HxD hex, disk and memory editor

    HxD 2.5 was released with many feature enhancements and bug fixes. Here are the change log and the download. GregC/DigicoolThings published a disassembler plugin on GitHub for MC6800, MC6809, 6502 and related CPUs. The updated plugin framework can be found, here, as usual: https://github.com/maelh/hxd-plugin-framework If you like it, please star / fork it, so it becomes more well known. Donations are welcome if you want to say thanks.
  21. HxD is a Freeware hex, disk and memory editor, that is fast and can handle files of arbitrary size (up to 8 EiB). Some of the feature highlights are: Disk editor (automatically unmounts drives as necessary when saving changes) Memory editor (full support for 64 and 32-bit) Data folding, for easier overview and hiding inaccessible regions Data inspector Converts current data into many types, for editing and viewing Open source plugin-framework to extend with new, custom type converters Search and replace with support for various data types Importing and exporting of Intel Hex, Motorola S-Records Exporting to Pascal, C, Java, C#, VB.NET, PureBasic, but also HTML, RTF, and TeX Checksum and hash generation and validation File compare Tools to split, join and shredder files Currently, available in version 2.4 and 17 languages: HxD download. P.S.: If you like it, please star the code on GitHub or give it a (good 😉) rating on download sites.
  22. mael

    HxD hex, disk and memory editor

    Currently, I am working again (as mentioned above) on a feature for creating a structure viewer/editor. PE (portable executable) files are currently the template to determine the necessary functionality (but other file formats like PNG-files and matching features will be added). Currently, you can define dynamic arrays and structures with dynamic size, where other parts/fields in the file define the size, and pointers are dereferenced automatically. There is also a feature to map pointers using a function (currently only built-in ones). For PE files this allows mapping RVA (relative virtual addresses) to absolute file offsets. All of the file structure is given in a declarative language, called HxD structure definition (HSD). A functional example for parsing PE headers is given below: types PVirtualAddress = pointer<UInt32, UInt32> IMAGE_DATA_DIRECTORY = struct { VirtualAddress: UInt32; Size: UInt32; } IMAGE_FILE_HEADER = struct { Machine: UInt16; NumberOfSections: UInt16; TimeDateStamp: UInt32; PointerToSymbolTable: UInt32; NumberOfSymbols: UInt32; SizeOfOptionalHeader: UInt16; Characteristics: UInt16; } IMAGE_OPTIONAL_HEADER32 = struct { Magic: UInt16; MajorLinkerVersion: UInt8; MinorLinkerVersion: UInt8; SizeOfCode: UInt32; SizeOfInitializedData: UInt32; SizeOfUninitializedData: UInt32; AddressOfEntryPoint: UInt32; BaseOfCode: UInt32; BaseOfData: UInt32; ImageBase: UInt32; SectionAlignment: UInt32; FileAlignment: UInt32; MajorOperatingSystemVersion: UInt16; MinorOperatingSystemVersion: UInt16; MajorImageVersion: UInt16; MinorImageVersion: UInt16; MajorSubsystemVersion: UInt16; MinorSubsystemVersion: UInt16; Win32VersionValue: UInt32; SizeOfImage: UInt32; SizeOfHeaders: UInt32; CheckSum: UInt32; Subsystem: UInt16; DllCharacteristics: UInt16; SizeOfStackReserve: UInt32; SizeOfStackCommit: UInt32; SizeOfHeapReserve: UInt32; SizeOfHeapCommit: UInt32; LoaderFlags: UInt32; NumberOfRvaAndSizes: UInt32; DataDirectory: IMAGE_DATA_DIRECTORY[:NumberOfRvaAndSizes]; } IMAGE_NT_HEADERS32 = struct { Signature: UInt8[4]; FileHeader: IMAGE_FILE_HEADER; OptionalHeader: IMAGE_OPTIONAL_HEADER32; } PIMAGE_NT_HEADERS32 = pointer<UInt32, IMAGE_NT_HEADERS32> IMAGE_DOS_HEADER = struct { e_magic: UInt8[2]; e_cblp: UInt16; e_cp: UInt16; e_crlc: UInt16; e_cparhdr: UInt16; e_minalloc: UInt16; e_maxalloc: UInt16; e_ss: UInt16; e_sp: UInt16; e_csum: UInt16; e_ip: UInt16; e_cs: UInt16; e_lfarlc: UInt16; e_ovno: UInt16; e_res: UInt16[4]; e_oemid: UInt16; e_oeminfo: UInt16; e_res2: UInt16[10]; _lfanew: UInt32; } IMAGE_SECTION_HEADER = struct { Name: Char8Ansi[8]; Misc_PhysicalAddressOrVirtualSize: UInt32; VirtualAddress: UInt32; SizeOfRawData: UInt32; PointerToRawData: UInt32; PointerToRelocations: UInt32; PointerToLinenumbers: UInt32; NumberOfRelocations: UInt16; NumberOfLinenumbers: UInt16; Characteristics: UInt32; } IMAGE_IMPORT_DESCRIPTOR = struct { OriginalFirstThunk_ImportLookupTable_RVA: UInt32; TimeDateStamp: UInt32; ForwarderChain: UInt32; Name_RVA: UInt32; FirstThunk_ImportAddressTable_RVA: UInt32; } OVERALL_FILE = struct { ImageDosHeader: IMAGE_DOS_HEADER; ImageNtHeaders32: IMAGE_NT_HEADERS32 @ :ImageDosHeader._lfanew; ImageSectionHeaders: IMAGE_SECTION_HEADER[:ImageNtHeaders32.FileHeader.NumberOfSections]; } instances $root: OVERALL_FILE The attached pictures show how this is parsed/visualized for my PropEdit.exe (but the solution is generic and works with any 32-bit PE file).
  23. Vincent Parrett

    VSoft.Awaitable - async/await for Delphi

    @Lars Fosdal I tested with regular methods and it does work fine. I updated it today to include overloads for procedures (ie where you don't need to return anything).
  24. Vincent Parrett

    VSoft.Awaitable - async/await for Delphi

    https://github.com/VSoftTechnologies/VSoft.Awaitable This is a simple wrapper over OmniThreadLibrary that borrows from it's Parallel.Async idea, but allows you to call functions that return values. e.g TAsync.Configure<string>( function (const cancelToken : ICancellationToken) : string var i: Integer; begin result := 'Hello ' + value; for i := 0 to 2000 do begin Sleep(1); //in loops, check the token if cancelToken.IsCancelled then exit; end; //where api's can take a handle for cancellation, use the token.handle WaitForSingleObject(cancelToken.Handle,5000); //any unhandled exceptions here will result in the on exception pro being called (if configured) //raise Exception.Create('Error Message'); end, token); ) .OnException( procedure (const e : Exception) begin Label1.Caption := e.Message; end) .OnCancellation( procedure begin //clean up Label1.Caption := 'Cancelled'; end) .Await( procedure (const value : string) begin //use result Label1.Caption := value; end); BTW, I know this isn't really quite the same as async/await (I use C# a lot) but it's about as close as we can get right now. My use case was just to be able to make long running requests in a thread and allow the caller to cancel the requests.
  25. mael

    HxD hex, disk and memory editor

    Well, I am sure you will understand that it's not really nice to advertise another product in a thread specifically presenting HxD. I have invested many years into it (since 2002), and it has been Freeware all the time. A little respect for that effort would be appreciated.
×