-
Content Count
2268 -
Joined
-
Last visited
-
Days Won
46
Everything posted by Fr0sT.Brutal
-
How to manage feature changes during release cycle?
Fr0sT.Brutal replied to Mike Torrettinni's topic in General Help
From me: Don't make videos for coding stuff!!! -
ICS V8.67 announced
Fr0sT.Brutal replied to Angus Robertson's topic in ICS - Internet Component Suite
I took a glance on adapting message loop for Linux but ICS' wrapper is too complex to understand it quickly. I've no strong requirement for Linux currently - even if it appears, Wine is doing pretty well. Nevertheless, would be nice to have Linux natively. -
Changing names to match new OpenSsl dlls
Fr0sT.Brutal replied to EugeneK's topic in ICS - Internet Component Suite
I can't view the patch in GUI as Tortoise says it's conflicting but this change looks possible to live together with current state by creating function aliases and pseudo-units via include -
How to manage feature changes during release cycle?
Fr0sT.Brutal replied to Mike Torrettinni's topic in General Help
Of course all these tmp commits live locally! This is one of killer features of Git, I can't imagine what I would do if I were on SVN -
How to manage feature changes during release cycle?
Fr0sT.Brutal replied to Mike Torrettinni's topic in General Help
Btw: when actively working on a feature, I sometimes don't bother about decorating beautiful commits. I just commit stuff periodically, even non-buildable and incomplete with very short messages or just "tmp" message. When code starts looking more or less stabilized, I squash these temp commits into something nice looking and do actual commits that will remain in history -
How to manage feature changes during release cycle?
Fr0sT.Brutal replied to Mike Torrettinni's topic in General Help
I'm the only dev of my projects so I adopted some kind of Git workflow: - Small changes fitting into single commit go directly to master - Somewhat big features (requiring significant changes in multiple files) go to feature branches. * If they are finished quickly (no commits to master happen after starting feature branch), I merge into master without fast-forward to get nice-looking curve in history. * If a branch lasts for a while, sometimes I rebase it onto current HEAD - or - * Merge commits from master to feature branch (this is what all should do but I find multiple merges too confusing in history so I try to avoid them). More frequently I utilize cherry-picking which is very nice tool of distributing commits. * When a feature is ready, I rebase onto current HEAD and do clean merge. I also use submodules for shared libs. This requires some self-discipline especially if you periodically modify these libs right from a parent project - this results in lots of fun when you have N different updates inside N different projects and got to merge them all into main repo and then update all these N submodules. I also came to a rule to commit changes in submodules into separate commits (without changes to parent project) just to separate things. What's good in submodules - you can always jump to any previous state including all deps and it will be buildable. Just don't forget to run "Update submodules" after switching -
Using Expressions in the Group By Clause in Interbase
Fr0sT.Brutal replied to MikeMon's topic in Databases
@Joseph MItzen I've never used IB since v6 I believe (the one shipped with D7), I switched to FB and never looked back -
Why empty dynamic arrays = NIL?
Fr0sT.Brutal replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
Are you using "if StringVar = EmptyStr" as well? -
Why empty dynamic arrays = NIL?
Fr0sT.Brutal replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
Yes, just like TDateTime = Double... and just like SizeOf(Char) = 1 until a thunder stroke at 2009 🙂 For me, not relying on implementation details is just an additional layer of stability. In 2009 those who weren't assuming Char is almost the same as Byte, could adopt Unicode with almost no changes. Others were suffering. If sometimes TDateTime becomes a record with two numbers (f.ex., days from 1 Jan 0001 and msecs of day), those who write "secsBetween := (dt1 - dt2)*86400" will suffer. Me, using "secsBetween := SecondsBetween(dt1, dt2)" won't. I personally consider it bad style. This relies on impl details, and any new coder will have to keep in mind these nuances. "What, var is null here? Okay, I know that from my Java/SQL/JS background. Let's assign it with 0 length for now, to be expanded later. What could go wrong?" Moreover, sometimes you want to refactor. F.ex., array becomes insufficient and you change type to TList. Option #1, if using `Length(arr)`: change type, try to build, change all `Length(arr)` to `arr.Count` that compiler will complain on Option #2, if using `arr = nil`: SUFFER. P.S. Honestly I don't see why array literals took so long to add. Clause "if arr = []" would be pretty obvious and consistent to string type -
How to set which of two class constructors executes first?
Fr0sT.Brutal replied to Incus J's topic in RTL and Delphi Object Pascal
Maybe you could use lazy init so the class' state will be independent of c-tor call order? TClassSmth = class private class function GetProp public class c-tor Create property Prop read GetProp end class c-tor TClassSmth.Create GetProp end class function TClassSmth.GetProp if not Assigned(FProp) then Init(FProp) Exit(FProp) end -
Why empty dynamic arrays = NIL?
Fr0sT.Brutal replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
Probably that was done for perf purpose. I wouldn't rely on this, consider it implementation-specific, just the same as with empty strings or that TDatetime is days+fraction-of-the-day since December 30, 1899, etc. -
AI experiences, GPT3 Leta series
Fr0sT.Brutal replied to Rollo62's topic in Algorithms, Data Structures and Class Design
Nevertheless they're quite strong at defending human operators from contacting with clients. Sometimes "Give me alive operator you stupid bot!!!" phrase is not enough and you have to find more clever ways to break through this wall. -
why shortstring in Delphi cannot used in our Programs using New IDE?
Fr0sT.Brutal replied to bravesofts's topic in Algorithms, Data Structures and Class Design
Well... if you have a pointer to memory, you can't deal with it as with string or array. Direct Ansi processing IMHO goes into history and I won't miss it. So one anyway has to copy data to a string or even convert from buffer to something convenient. So what's the sense in those types. -
why shortstring in Delphi cannot used in our Programs using New IDE?
Fr0sT.Brutal replied to bravesofts's topic in Algorithms, Data Structures and Class Design
Yeah, these ones are dumb remnants. Things are changing with string helper though. Alas, for new compilers only. I wonder why Emba didn't declare these functions as XXX(string) naturally and declare AnsiXXX(string) as deprecated aliases. Instead we got something crazy like 64-bit System32 & 32-bit SysWOW64 I've no idea what LOGD expects... I'd say it's the flaw of Log's API to not provide convenient overloads with language-native types -
why shortstring in Delphi cannot used in our Programs using New IDE?
Fr0sT.Brutal replied to bravesofts's topic in Algorithms, Data Structures and Class Design
As old-school Delphier I understand why all these string types exist but honestly I'd cut some of them down. Ansistrings with codepages could be removed - RawBytes and Utf8 seems sufficient. Even Utf8 as string type could be avoided in some cases. Your example : Without 8-bit string compiler support procedure Output(const aMsg: string); begin LOGD(TUTF8Encoding.ToBytes(aMsg)); end; -
We use DUnitX and it discovers all our silly mistakes before release
Fr0sT.Brutal replied to Lars Fosdal's topic in DUnitX
The test involved my wrapper for createprocess with threads, IO pipes etc, it's somewhat complex to extract MRE. I have it in my backlog but hardly will put my hands on it in near future... -
why shortstring in Delphi cannot used in our Programs using New IDE?
Fr0sT.Brutal replied to bravesofts's topic in Algorithms, Data Structures and Class Design
I've seen some articles with yells like "why Shortstring, Ansistring, Rawbytestring, WideString, Unicodestring, Utf8string, Whateverstring when you only need one Unicode string?!" Indeed, AFAIK C# only has one string type and so does JS. OTOH, any Tbytes/Buffer representation lacks ability of clean operations ("if bytes = 'foo'" etc). However, most of string features could be implemented as helpers, overloaded operators and custom IDE viewers. If only Emba introduced all that stuff together with removing string types, probably this change was accepted more gladly. -
delphi set max length for Argument of string in a method
Fr0sT.Brutal replied to bravesofts's topic in Algorithms, Data Structures and Class Design
ShortString is limited to 255 characters so you have not so much types to declare -
why shortstring in Delphi cannot used in our Programs using New IDE?
Fr0sT.Brutal replied to bravesofts's topic in Algorithms, Data Structures and Class Design
Many people complained "Why so many string types and what are all these for??" so Emb decided to cut them off in favor of Tbytes but they didn't provide convenient string features at that time (Pos, concat, inline init etc) so much more people started complaining they absolutely need all of that string types so Emb had to bring them back 🙂 -
I'm with Anders here. The guy is trying to sold his components (at least seems like so...) but there's no prices and any link leads to email form. As a possible option: you could embed DLLs into EXE as resources and extract them on launch. Thus you can utilize PDFium project, for instance.
-
Can DebugEngine work without a .map file attached?
Fr0sT.Brutal replied to aehimself's topic in Delphi Third-Party
IDK what DebugEngine is but you could get stack trace in the form of addresses and send it from client. Then, having .map for the exact binary version, you can translate addresses to function names -
Hereby I name this thread "Crystal ball challenge". No code shalt be shown as that makes etheric vision unclear
-
...and then International Domain Names come into chat
-
And yet they still can't implement an elementary customizable toolbar. Or change MouseWheelClick shortcut from weird multicursor action to usual page scroll. Btw, @Kas Ob. , I saw ppl in relevant issue topic saying farewell VSCode 😉
-
Is it possible to see Git current working branch in IDE?
Fr0sT.Brutal replied to Mike Torrettinni's topic in Delphi IDE and APIs
Fill a request to QC 🙂 I guess it would be quite easy to implement