⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcharliterals.out

📁 格式化源码的最新板
💻 OUT
字号:
unit TestCharLiterals;

{ AFS 30 Jan 2000
 This unit compiles but is not semantically meaningfull
 it is test cases for the code formatting utility

 This unit tests chars and strings }


interface

implementation

uses Dialogs;

procedure Chars;
const
  Fred      = #80;
  LineBreak = #13#10;
  SomeChars = #78#79#80;
  HEXCHARS  = #$12#$2E#60;

  DQS_0 = '';
  DQS_1 = '''';
  DQS_2 = '''''';
  DQS_3 = '''''''';
  DQS_4 = '''''''''';

var
  ls:  string;
  ls2: string;
begin
  ls  := #90 + LineBreak + #90#91 + SomeChars + #90;
  ls2 := #$F#$A;
  ls2 := ls + #$1F + HEXCHARS;
end;

procedure Stringchars;
const
  Boo   = 'Boo';
  HELLO = 'Hello'#13;
  OLLA  = #10'Olla!';
var
  ls: string;
begin
  ls := 'Fred';
  ls := #13;
  ls := #12'Fred'#32'Fred'#22;
end;

{ hat char literals.
  Undocumented, but works.
  Described as "Old-style" - perhaps a Turbo-pascal holdover
 Pointed out by Dimentiy }

const
  str1 = ^M;

  HAT_FOO    = ^A;
  HAT_BAR    = ^b;
  HAT_FISH   = ^F;
  HAT_WIBBLE = ^q;
  HAT_SPON   = ^Z;

  HAT_AT = ^@;

  HAT_FROWN = ^[;
  HAT_HMM   = ^\;
  HAT_SMILE = ^];
  HAT_HAT   = ^^;
  HAT_UNDER = ^_;

  HAT_EQ_NOSPACE  = ^=;
  HAT_EQ_SPACEAFT = ^=;
  HAT_EQ_LONG     = ^=^=#0^='foo'^=;

var
  hat1: char = ^h;
  hat2: char = ^j;
  hat3: char = ^m;

procedure HatBaby;
var
  str: string;
  ch:  char;
begin
  str := HAT_FOO + ^M;
  ch  := ^N;

  str := HAT_FOO + ^@ + ^] + ^^ + ^- + ^\ + ^[;
end;

procedure TestHatCharliteralsInStrings;
var
  Str1: string;
begin
  Str1 := 'prefix'^M + 'substr2';
  Str1 := 'prefix'^M'foo' + 'substr2';
  Str1 := 'prefix'^M'foo'#23 + 'substr2'#56;
  Str1 := 'prefix'^M'foo'^M'bar'^N + 'substr2'^O;
  Str1 := 'prefix'#13^M#12^@'foo'#10^M'bar';

  { these are harder, as the '^' char has other uses }
  Str1 := ^M;
  Str1 := ^M + 'substr2';
  Str1 := ^M'foo' + 'substr2';
  Str1 := ^M^N^@'foo' + 'substr2';
  Str1 := ^M'foo'#23 + 'substr2'#56;
  Str1 := ^M'foo'^M'bar'^N + 'substr2'^O;
  Str1 := #13^M#12^@'foo'#10^M'bar';
end;

procedure HatEquals(const Value: PChar);
const
  { ambiguous.
    same chars lexed differently in if-statement
    Impossble to lex cleanly }

  HAT_EQ     = ^=;
  HAT_EQ_C   = ^='C';
  HAT_EQ_NIL = ^=#0;
  HAT_EQ_C_NIL = ^='C'^=#0^='C'^=#0;
var
  st: string;
begin
  if Value^ = 'C' then
    ShowMessage('See')
  else if (Value^ = #0) then
    ShowMessage('nil')
  else if (Value^ = ^=) then
    ShowMessage('terrence, this is stupid stuff');

  { space }
  if Value^ = 'C' then
  { brackets }
  else if ((Value^) = #0) then
    ShowMessage('nil')
  { new line }
  else if (Value^ = ^=) then
    ShowMessage('terrence, this is stupid stuff');


  st := Value^ + Value^;
  if (Value^ = ^=^=) then
    ShowMessage('meep');
  if (Value^ = ^+^-^^^_) then
    ShowMessage('meep');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -