<?
xml version="1.0" encoding="utf-8" ?>
<codetemplate xmlns="http:
//schemas.borland.com/Delphi/2005/codetemplates"
version="1.0.0">
<template name="TWideStringX" invoke="manual">
<description>
WideChar-
Array
</description>
<author>
himitsu
</author>
<point name="size">
<text>
32
</text>
<hint>
Größe des Arrays
</hint>
</point>
<point name="name">
<script language="Delphi">
InvokeCodeCompletion;
</script>
<text>
TWideString32
</text>
<hint>
Name des Records
</hint>
</point>
<code language="Delphi" context="typedecl" delimiter="|"><![CDATA[
Type |name| =
packed Record
Data:
Array[1..|size|]
of WideChar;
Class Operator Implicit(
Const Value: AnsiString): |name|;
Class Operator Implicit(
Const Value: WideString): |name|;
Class Operator Implicit(
Const Value: |name|): WideString;
Class Operator Equal (
Const A: |name|;
Const B: WideString): Boolean;
Class Operator NotEqual(
Const A: |name|;
Const B: WideString): Boolean;
End;]]>
</code>
<code language="Delphi" context="decl" delimiter="|"><![CDATA[
Class Operator |name|.Implicit(
Const Value: AnsiString): |name|;
Var S: WideString;
Begin
S := WideString(Value);
If Length(S) > Length(Result.Data)
Then System.Error(reRangeError);
Move(PWideChar(S)^, Result.Data, Length(S) * 2);
If Length(S) < Length(Result.Data)
Then
FillChar(Result.Data[Length(S) + 1], (Length(Result.Data) - Length(S)) * 2, 0);
End;
Class Operator |name|.Implicit(
Const Value: WideString): |name|;
Begin
If Length(Value) > Length(Result.Data)
Then System.Error(reRangeError);
Move(PWideChar(Value)^, Result.Data, Length(Value) * 2);
If Length(Value) < Length(Result.Data)
Then
FillChar(Result.Data[Length(Value) + 1], (Length(Result.Data) - Length(Value)) * 2, 0);
End;
Class Operator |name|.Implicit(
Const Value: |name|): WideString;
Var i: Integer;
Begin
i := 0;
While (i < Length(Value.Data))
and (Value.Data[i + Low(Value.Data)] <> #0)
do Inc(i);
SetLength(Result, i);
Move(Value.Data, PWideChar(Result)^, i * 2);
End;
Class Operator |name|.Equal(
Const A: |name|;
Const B: WideString): Boolean;
Var S: WideString;
Begin
S := A;
Result := S = B;
End;
Class Operator |name|.NotEqual(
Const A: |name|;
Const B: WideString): Boolean;
Begin
Result :=
not (A = B);
End;]]>
</code>
</template>
</codetemplate>