Могу ли я использовать строковые методы "IsEmpty" в Delphi - PullRequest
5 голосов
/ 19 июня 2009

Embaracdero документы Методы "IsEmpty" для типов строк, которые я успешно использовал с кодом C ++ Builder.

WideString s;

if (s.IsEmpty())
   ....

Я попробовал то же самое из Delphi, но не смог заставить его скомпилировать:

var s: WideString;
begin
  if s.IsEmpty then
  ....

Я знаю, что вы можете сравнить с пустой строкой или вызвать функцию Length, но возможно ли вызвать этот метод IsEmpty из Delphi?

РЕДАКТИРОВАТЬ: Просто чтобы прояснить, это не было предназначено для проблемы String vs Widestring.

По сути, документы, на которые я ссылаюсь выше, описывают синтаксис Паскаля, а также синтаксис C ++, но, похоже, это не работает. Я предполагаю, что это просто недостаток в документации.

Возвращает true, если System :: WideString :: WideString пуста.

Паскаль: Функция IsEmpty: bool;

Ответы [ 5 ]

14 голосов
/ 19 июня 2009

String не является классом в Delphi, поэтому он не имеет методов, вы должны использовать функции для манипулирования строками, такими как Length, Copy и т. Д. String - это класс в C ++, так что, возможно, вас это смущает.

5 голосов
/ 19 июня 2009

Delphi - это гибридный язык. Содержит основные типы и классы. Только классы (и записи и объекты) могут содержать методы.

Строка - это базовый тип, хотя и особый. Это единственный тип, который имеет зарезервированное слово. Вот почему он часто пишется строчными буквами (строка) в отличие от других типов, которые имеют начальный регистр (целое число).

Вы можете, если хотите:

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;
5 голосов
/ 19 июня 2009

Нет. Строка не WideString, даже в D2009. Вы бы тоже этого не хотели; сравнение со строкой nil / empty намного быстрее, чем вызов метода.

В Delphi:

var 
  s: string;
begin
  if s = '' then begin
    ShowMessage('It is empty or nil.');

... для строки обнаруживает как ноль, так и пустую строку (которая = ноль).

1 голос
/ 19 июня 2009
if Trim(s)='' then

???

0 голосов
/ 03 декабря 2018

В новых редакциях вы можете использовать много вспомогательных функций для строк, а также s.IsEmpty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...