Roddy
Roddy

Reputation: 68033

Can I use string "IsEmpty" methods in Delphi

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

Answers (5)

Dmitry Belkeivch
Dmitry Belkeivch

Reputation: 33

In the new editions you can use many string helper functions and s.IsEmpty too.

Upvotes: 2

Craig Stuntz
Craig Stuntz

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

Toon Krijthe
Toon Krijthe

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

idursun
idursun

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

SimaWB
SimaWB

Reputation: 9294

if Trim(s)='' then

???

Upvotes: 1

Related Questions