Menu

[r2035]: / trunk / Src / UUserDetails.pas  Maximize  Restore  History

Download this file

151 lines (128 with data), 3.9 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{
* UUserDetails.pas
*
* Implements a record that encapsulates information a program user.
*
* $Rev$
* $Date$
*
* ***** BEGIN LICENSE BLOCK *****
*
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The Original Code is UUserDetails.pas
*
* The Initial Developer of the Original Code is Peter Johnson
* (http://www.delphidabbler.com/).
*
* Portions created by the Initial Developer are Copyright (C) 2009-2011 Peter
* Johnson. All Rights Reserved.
*
* Contributor(s)
* NONE
*
* ***** END LICENSE BLOCK *****
}
unit UUserDetails;
interface
type
/// <summary>
/// Record that encapsulates information about a program user.
/// </summary>
TUserDetails = record
strict private
/// <summary>Value of Name property.</summary>
fName: string;
/// <summary>Value of EMail property.</summary>
fEmail: string;
/// <summary>Setter for Name property.</summary>
/// <remarks>Trims leading and trailing spaces from new value.</summary>
procedure SetName(const AName: string);
/// <summary>Setter for Email property.</summary>
/// <remarks>Trims leading and trailing spaces from new value.</summary>
procedure SetEmail(const AEmail: string);
public
/// <summary>User name.</summary>
property Name: string read fName write SetName;
/// <summary>User email.</summary>
property Email: string read fEmail write SetEmail;
/// <summary>Constructs record with given field values.</summary>
constructor Create(const UserName, UserEmail: string);
/// <summary>Creates and returns a new null record.</summary>
class function CreateNul: TUserDetails; static;
/// <summary>Assigns the field values of a given record to this record.
/// </summary>
procedure Assign(const Src: TUserDetails);
/// <summary>Initialises the record to null values.</summary>
procedure Init;
/// <summary>Checks if record is null, i.e. empty.</summary>
function IsNul: Boolean;
/// <summary>Returns string representation of user details.</summary>
function ToString: string;
end;
implementation
uses
// Project
UStrUtils;
{ TUserDetails }
procedure TUserDetails.Assign(const Src: TUserDetails);
begin
SetName(Src.Name);
SetEmail(Src.Email);
end;
constructor TUserDetails.Create(const UserName, UserEmail: string);
begin
SetName(UserName);
SetEmail(UserEmail);
end;
class function TUserDetails.CreateNul: TUserDetails;
begin
Result.Init;
end;
procedure TUserDetails.Init;
begin
SetName('');
SetEmail('');
end;
function TUserDetails.IsNul: Boolean;
begin
Result := (Name = '') and (Email = '');
end;
procedure TUserDetails.SetEmail(const AEmail: string);
begin
fEmail := StrTrim(AEmail);
end;
procedure TUserDetails.SetName(const AName: string);
begin
fName := StrTrim(AName);
end;
function TUserDetails.ToString: string;
begin
// Returns one of following:
// +-----------------+----------+-----------+
// | Result | Name Set | Email Set |
// +-----------------+----------+-----------+
// | '' | No | No |
// | 'Name' | Yes | No |
// | '<Email>' | No | Yes |
// | 'Name <Email>' | Yes | Yes |
// +-----------------+----------+-----------+
if IsNul then
Exit('');
Result := Name;
if Email <> '' then
begin
if Result <> '' then
Result := Result + ' ';
Result := Result + '<' + Email + '>';
end;
end;
end.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.