I’m trying to translate a huge project from C++ to Delphi and I’m finalizing the translation. One of the things I left is the ‘\0’ monster.
if (*asmcmd=='\0' || *asmcmd==';')
where asmcmd is char*.
I know that \0 marks the end of array type in C++, but I need to know it as a byte. Is it 0?
In other words, would the code below be the equivalent of the C++ line?
if(asmcmd^=0) or (asmcmd^=';') then ...
where asmcmd is PAnsiChar.
You need not know Delphi to answer my question, but tell me \0 as byte. That would work also. 🙂
'\0'equals0. It’s a relic from C, which doesn’t have any string type at all and uses char arrays instead. The null character is used to mark the end of a string; not a very wise decision in retrospect – most other string implementations use a dedicated counter variable somewhere, which makes finding the end of a string O(1) instead of C’s O(n).*asmcmd=='\0'is just a convoluted way of checkinglength(asmcmd) == 0orasmcmd.is_empty()in a hypothetical language.