Jump to content

Leaderboard


Popular Content

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

  1. Uwe Raabe

    IDE Code Coverage Plugin available

    @Jim McKeeth Here it is: Delphi Code Coverage Plugin
  2. Fr0sT.Brutal

    D11 - A bridge too far.. :-(

    Or make unit tests open source and ask community to join them. This would help at least keeping lib in stable state.
  3. David Heffernan

    D11 - A bridge too far.. :-(

    The thing is, releasing software that is of low quality means that your engineering team spends large amounts of time addressing this low quality post release when it is much more expensive to do so. If they would use better engineering processes and concentrate on quality from the very start, then they would use far less human resources. They aren't even cutting corners with this approach. It is inefficient in terms of their own times and resource, and obviously really inefficient for every user affected by this low quality.
  4. Der schöne Günther

    UAC request minimized instead of full-screen

    Be sure to supply your foreground window's handle to ShellExecuteEx. Source: Sertac Akyuz, StackOverflow.com
  5. mvanrijnen

    D11 - A bridge too far.. :-(

    main problem is that we have now a buggy D11, but they don't look back and fix the D10 version, there a lot of bugs that they could fix, but they just don't. i thought part of the subscription program was that they would fix bugs from a previous release. They entered a path where they never gonna get a (reasonable) bug fixed product. very very disappointed.
  6. Second but without Egyptian begin/end.
  7. JS is pretty cool here for const [str, obj] of sl if (str == aStringArg) return obj; I partially agree with you. I love for-in but the fact it hides current index makes it non-applicable in pretty much cases.
  8. Since the actions all involve FReader, I'd move the method into FReader's class instead of TBla. I think it makes it much more readable (as the general rule of thumb is - the fewer dots the better) Also changed the method name as you suggested in the thread. Bonus issues: Changed Utc.IsZero to a new Utc.IsValidTimeEntry as that logic belongs to TMeasurementTime, not this method. Depending on the nature of the Reader, you might need to save the current position and restore it afterwards with a try/finally block to squash any changed-state issues. Also changed to use a Exception class scoped to the Reader. 'Seek' seems a little oddly named method here... more like a 'Goto' or RecordNumber assignment. (Maybe add a custom enumerator and use FOR/IN and get rid of the method call) Might also make a resource string for the exception text. procedure TReaderClass.GetFirstValidTimeEntry(out _UtcValid, _TimeByUtc:TMeasurementTime); var i:Integer; Utc:TMeasurementTime; begin for i := 0 to Count - 1 do begin Seek(i); Utc := Data.Time; if not Utc.IsValidTimeEntry then begin _UtcValid := Utc; _TimeByUtc := MeasurementTime(i); Exit; end; end; raise EMyReaderException.CreateFmt('%s has no valid entry', [DataFileName]); end;
  9. Wrong, string and object are in the same entry - the internal storage of a TStringList has an array of TStringItem which is a record which contains a string and an object. You simply find it like this: function findSomething( const aStringArg : string ) : TObject; var i: Integer; begin i := sl.IndexOf(aStringArg); if i >= 0 then Result := sl.Objects[i] else Result := nil; end; Make this a method in your own TStringListHelper and there you go. If you want easy and fast lookup of objects by string key, then use a dictionary.
  10. Alberto Fornés

    D11 - A bridge too far.. :-(

    Maybe if you don't have the human resources and / or time to do a good test and find bugs before releasing the product, and you hope that the customers will find and report them, maybe Embarcadero could offer that version at a lower price and establish a more honest relationship.
  11. Remy Lebeau

    update indy to use tls 1.2 in c++builder 6?

    <sigh> Try this: // SOURCE #define BUILDING_DLL #include "mydll.h" struct userFunctions { OnWorkBeginFunc onWorkBegin; OnWorkEndFunc onWorkEnd; OnWorkFunc onWork; }; static void __fastcall MyOnWorkBeginHandler(void *AData, TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCountMax) { userFunctions *funcs = static_cast<userFunctions*>(AData); funcs->onWorkBegin((OnWorkMode)AWorkMode, AWorkCountMax); } static void __fastcall MyOnWorkEndHandler(void *AData, TObject *ASender, TWorkMode AWorkMode) { userFunctions *funcs = static_cast<userFunctions*>(AData); funcs->onWorkEnd((OnWorkMode)AWorkMode); } static void __fastcall MyOnWorkHandler(void *AData, TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount) { userFunctions *funcs = static_cast<userFunctions*>(AData); funcs->onWork((OnWorkMode)AWorkMode, AWorkCount); } template <typename EventType, typename HandlerType> static EventType makeEventHandler(void *data, HandlerType *handler) { TMethod m; m.Data = data; m.Code = handler; return reinterpret_cast<EventType&>(m); /* alternatively: EventType evt; TMethod &m = reinterpret_cast<TMethod&>(evt); m.Data = data; m.Code = handler; return evt; */ } static bool sslPathSet = false; char* getdata(const char *url, OnWorkBeginFunc onWorkBegin, OnWorkEndFunc onWorkEnd, OnWorkFunc onWork) { char *result = NULL; try { if (!sslPathSet) { sslPathSet = true; IdOpenSSLSetLibPath(ExtractFilePath(ParamStr(0))); } TIdHTTP *http = new TIdHTTP; try { userFunctions funcs; if (onWorkBegin) { funcs.onWorkBegin = onWorkBegin; http->OnWorkBegin = makeEventHandler<TWorkBeginEvent>(&funcs, &MyOnWorkBeginHandler); } if (onWorkEnd) { funcs.onWorkEnd = onWorkEnd; http->OnWorkEnd = makeEventHandler<TWorkEndEvent>(&funcs, &MyOnWorkEndHandler); } if (onWork) { funcs.onWork = onWork; http->OnWork = makeEventHandler<TWorkEvent>(&funcs, &MyOnWorkHandler); } TIdSSLIOHandlerSocketOpenSSL *SSL = new TIdSSLIOHandlerSocketOpenSSL(http); SSL->SSLOptions->SSLVersions = TIdSSLVersions() << sslvTLSv1 << sslvTLSv1_1 << sslvTLSv1_2; http->IOHandler = SSL; http->ReadTimeout = 10000; UTF8String s = http->Get(url); result = new char[s.Length()+1]; memcpy(result, s.c_str(), s.Length()+1); } __finally { delete http; } } catch (...) { return NULL; } return result; } void freedata(char *data) { delete[] data; }
  12. Rollo62

    D11 - A bridge too far.. :-(

    I hope that I make my first D11 AppStore Upload soon ... thats usable enough if it works as expected
  13. First time I see this phrase. Makes sense.
  14. David Heffernan

    D11 - A bridge too far.. :-(

    You'd think that a good engineering department would be able to develop programs to a sufficient level of quality that you wouldn't need the public to do the testing by trial and error. I don't agree with the sentiment here that it is not possible to create good quality software without getting the public to test it.
  15. Ian Branch

    D11 - A bridge too far.. :-(

    Hi Team, The Customer uses multiple modes. LAN, RDP & ThinFinity for his Staff as they work from Home and from multiple Shops. As well as Android tablets via their browser into Thinfinity. The Apps are all 32 bit. I have not been able to reproduce any of their 'issues', except in my first days of D11, but they insist that they are getting screens not writing correctly with issues ranging from the left side of text cut off in the field to whole sections of the from moving up over the components above. This one seems to be related to having a TPanel on top of a TPanel. I observed other issues also related to TPanel. To fields disappearing. There should be a DB field after Name in this image and the whole bottom section has moved up a little more than the height of the 'Consumer' text. When I log in via the same means, the field shows. Here, in a different App, you can see the 19 that should be the day in the date only just showing the back of the 9. Again, when I logged in, all the date, 19/10/2021 showed. They have cited other similar issues but haven't supplied images. Regardless of where the issue is att, 'The Customer is always right' until proven otherwise. As far as reporting, I am knee deep in going back to D10.4.2 where there were none of these issues, so I can get a fresh set of Apps, 21 of them, uploaded to the Customer's server tonight. I appreciate your inputs. Obviously if I was able to reproduce the issue(s) I could address them but alas.... Ian
  16. David Schwartz

    Delphi and the new Apple M1 CPU

    TMS WebCore has electron wrappers that work with their web components. I don't really like FMX, and prefer Raize / Konopka components for routine VCL work. But WebCore has their own plus you can use the TMS FNC components as well. They both have lots of properties added to support the unique needs of running inside a browser DOM, including support for CSS.
  17. Sherlock

    Delphi and the new Apple M1 CPU

    At four times the price 🤣😂🤣
  18. Rollo62

    Delphi and the new Apple M1 CPU

    Beside that, what are the latest news about the ARM, Softbank, Apple, Nvidia theatre ? I think this will affect us all, if ARM is in the wrong hands. Then I have to move back to good old Z80
  19. Ian Branch

    D11 - A bridge too far.. :-(

    Hi Team, At the instruction of my main Customer I am reverting to D10.4.2. They, and I for that matter, are tired of dealing with screens/forms/components not showing correctly where they did in 10.4. I start D11 with the '/highdpi/unaware' switch but am still having issues. As I don't need a very disgruntled Customer, 'his wish is my command'. I will reconsider after D11.1 is released, and then very cautiously. Sigh! It had such potential. Just thought you might like to know my experience. Regards, Ian
  20. FredS

    D11 - A bridge too far.. :-(

    So at least one step above 'unusable' 🙂
  21. Uwe Raabe

    D11 - A bridge too far.. :-(

    Who says that they weren't? Edit: To get a hint, just check the open QP entries for Delphi 11 created before the release date: https://quality.embarcadero.com/browse/RSP-35310?jql=status in (Open%2C "In Progress"%2C Reopened%2C "Needs feedback"%2C Reported) AND affectedVersion %3D "11.0 Alexandria" AND created <%3D 2021-09-09
  22. dummzeuch

    D11 - A bridge too far.. :-(

    Many of the still existing problems should have been found during the beta tests and should have been fixed before the release. The current state of D11 should be considered public beta, not ready for production, but they charge for it (quite a lot). It's a hen and egg problem really: E.g. The VCL designer is not usable in the current state (IMHO), so why should one use it? But if nobody uses it, the bugs will not be found, reported and fixed.
  23. KenR

    D11 - A bridge too far.. :-(

    D11 is far too buggy to use in production. Maybe in a year or so given the speed that Embarcaderor fixes bugs (and sometimes never)!
  24. David Heffernan

    D11 - A bridge too far.. :-(

    All prior experience tells us this is what happens with a new release. Now they spend a year or two fixing this round of bugs. We'll, fixing the most significant ones. Some will be with us for a while.
  25. Thanks. No more Delphi 11 for me for a while then!
×