Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использовать в Delphi средство проверки типов для ваших собственных типов данных

Delphi , Синтаксис , Типы и Переменные

Использовать в Delphi средство проверки типов для ваших собственных типов данных

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Delphi pruft die Typen der ubergebenen Variablen fur entsprechende 
  var Parameter einer Prozedure / Funtion anhand der gefuhrten Typen. 
  Dabei wird unterschieden zwischen strenge und schwache Typendeklarationen. 
  Das kann man ausnutzen, um bestimmte Bedingungen zu kreieren, die 
  beim Programmieren respektiert sein mussen: Delphi wird u.U. einen 
  Compiler-Fehler produzieren. 
}

 { 
  Delphi checks the type of variables you pass in a procedure or a function 
  call for declared var parameters. 
  It makes a difference if you make a strong or weak type declaration. 
  You can use this casuality to create a design time proofing rule, proofing 
  the code at design time. Delphi won't compile a code part if it's 
  "strong checked". 
}

 type
   // Strenge Prufung wird veranlasst 
  // Strong checking will be operated 
  TCheckedIniFileNameType = type
      string;

   // Schwache Prufung bei dieser Typ-Deklaration 
  // Weak checking for this type declaration 
  TSimpleIniFileNameType = string;

   { This will be strong checked }
 procedure CheckedTypeProcedure(var IniFileName: TCheckedIniFileNameType);
 begin
   ShowMessage(IniFileName);
 end;

 { This will be less strong checked }
 procedure SimpleTypeProcedure(var IniFileName: TSimpleIniFileNameType);
 begin
   ShowMessage(IniFileName);
 end;

 { Weakest form of checking }
 procedure NoTypeProcedure(var IniFileName: string);
 begin
   ShowMessage(IniFileName);
 end;

 procedure TForm4.Button1Click(Sender: TObject);
 var
   StringOnly: string;
   SimpleIniFileName: TSimpleIniFileNameType;
   CheckedIniFileName: TCheckedIniFileNameType;
 begin
   StringOnly         := 'C:\TEST.TXT';
   SimpleIniFileName  := 'C:\TEST.TXT';
   CheckedIniFileName := 'C:\TEST.TXT';

   // This will compile... 
  CheckedTypeProcedure(CheckedIniFileName);
   SimpleTypeProcedure(SimpleIniFileName);
   SimpleTypeProcedure(StringOnly);
   NoTypeProcedure(StringOnly);
   NoTypeProcedure(SimpleIniFileName);

   // This will not... 
  CheckedTypeProcedure(SimpleIniFileName);
   CheckedTypeProcedure(StringOnly);
   SimpleTypeProcedure(CheckedIniFileName);
   NoTypeProcedure(CheckedIniFileName);
 end;

Код демонстрирует использование сильной и слабой типизации в Delphi. Он определяет три типа: TCheckedIniFileNameType, TSimpleIniFileNameType и простой строковый тип. Процедуры CheckedTypeProcedure, SimpleTypeProcedure и NoTypeProcedure предназначены для проверки типа входного параметра.

Вот что каждый тип и процедура делает:

  1. TCheckedIniFileNameType: Это сильная типизированная переменная, которая строго требует, чтобы только строки передавались в процедуры, принимающие этот тип.
  2. TSimpleIniFileNameType: Это слабая типизированная переменная, которая позволяет любому типу переменной быть переданным в процедуры, принимающие этот тип.
  3. NoTypeProcedure: Эта процедура не проверяет тип входного параметра вообще.

Пример кода создает три переменные: StringOnly (простая строка), SimpleIniFileName (типа TSimpleIniFileNameType) и CheckedIniFileName (типа TCheckedIniFileNameType). Затем он вызывает каждую процедуру с этими переменными в качестве аргументов, чтобы продемонстрировать различные типы проверки.

Результаты следующие:

  • Процедуры, принимающие TCheckedIniFileNameType, будут компилироваться только при передаче строковой переменной.
  • Процедуры, принимающие TSimpleIniFileNameType, позволят любому типу переменной быть переданным, но могут все еще вызвать ошибку компиляции, если передаваемое значение не является строкой.
  • Процедуры, не проверяющие тип вообще (как NoTypeProcedure), просто игнорируют тип и передают любое значение.

Этот код может помочь разработчикам создавать robust и self-documenting код, делая более простым обнаружение ошибок, связанных с типами, на этапе проектирования, а не на этапе выполнения.

В статье описано, как использовать средство проверки типов в Delphi для своих собственных типов данных, чтобы создать дизайн-тайм проверку кода и предотвратить компиляционный ошибок.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Типы и Переменные ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:08:08/0.003281831741333/0