Reputation: 68033
Embaracdero documents "IsEmpty" methods for string types, which I've used successfully with C++ Builder code.
WideString s;
if (s.IsEmpty())
....
I tried the same from Delphi, and couldn't get it to compile:
var s: WideString;
begin
if s.IsEmpty then
....
I know you can compare with an empty string, or call the Length function, but is it possible to call this IsEmpty method from Delphi?
EDIT: Just to clarify, this wasn't meant as a String vs Widestring issue.
Basically, the docs I link to above describe a Pascal syntax, as well as a C++ one, yet this doesn't seem to work. I assume this is just a flaw in the documentation.
Returns true if the System::WideString::WideString is empty.
Pascal: function IsEmpty: bool;
Upvotes: 7
Views: 24920
Reputation: 33
In the new editions you can use many string helper functions and s.IsEmpty too.
Upvotes: 2
Reputation: 126547
No. string is not WideString, even in D2009. You wouldn't want to, either; comparing with nil/empty string is much faster than a method call.
In Delphi:
var
s: string;
begin
if s = '' then begin
ShowMessage('It is empty or nil.');
...for string detects both nil and empty string (which is = nil).
Upvotes: 5
Reputation: 53366
Delphi is an hybrid language. It contains basic types and classes. Only classes (and records and objects) can contain methods.
String is a basic type, although a special one. It's the only type that has a reserved word. That's why its often written with a lowercase (string) unlike other types which have a starting captial (Integer).
You can if you like:
type
TString = class
private
FString: string;
public
constructor Create(const AValue: string);
property &String: string read FString write FString;
property IsEmpty: Boolean read GetIsEmpty;
// ...
end;
Upvotes: 5
Reputation: 6335
String is not a class in Delphi therefore it has no methods, you have to use functions for string manipulations like Length, Copy, etc... String is a class in C++ so maybe you are confused by that.
Upvotes: 15