home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / chap14 / easystr / main.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-20  |  2KB  |  82 lines

  1. unit Main;
  2.  
  3. { Program copyright (c) 1995 by Charles Calvert }
  4. { Project Name: EASYSTR }
  5.  
  6. { This programs demonstrates some basic facts
  7.   about the way strings are structured. In particular,
  8.   it gives you a look at the length byte, which is the
  9.   zeroth element in all Pascal based strings. The length
  10.   byte determines the length of a string. If the
  11.   length byte is too large, then garbage characters can
  12.   appear in your strings.
  13. }
  14.  
  15. interface
  16.  
  17. uses
  18.   SysUtils, WinTypes, WinProcs,
  19.   Messages, Classes, Graphics,
  20.   Controls, Forms, Dialogs,
  21.   StdCtrls, ExtCtrls;
  22.  
  23. type
  24.   TEasyString = class(TForm)
  25.     Panel1: TPanel;
  26.     Label1: TLabel;
  27.     Valid: TButton;
  28.     Bad: TButton;
  29.     procedure BValidClick(Sender: TObject);
  30.     procedure BBadClick(Sender: TObject);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36.  
  37. var
  38.   EasyString: TEasyString;
  39.  
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. procedure ScrambleString(var S: String);
  45. var
  46.   i: Integer;
  47. begin
  48.   for i := 0 to 255 do
  49.     S[i] := Chr(Random(255));
  50. end;
  51.  
  52. procedure TEasyString.BValidClick(Sender: TObject);
  53. var
  54.   S: String;
  55. begin
  56.   ScrambleString(S);
  57.   S[0] := #5;
  58.   S[1] := 'H';
  59.   S[2] := 'e';
  60.   S[3] := 'l';
  61.   S[4] := 'l';
  62.   S[5] := 'o';
  63.   Label1.Caption := S;
  64. end;
  65.  
  66.  
  67. procedure TEasyString.BBadClick(Sender: TObject);
  68. var
  69.   S: string;
  70. begin
  71.   ScrambleString(S);
  72.   S[0] := #150;
  73.   S[1] := 'H';
  74.   S[2] := 'e';
  75.   S[3] := 'l';
  76.   S[4] := 'l';
  77.   S[5] := 'o';
  78.   Label1.Caption := S;
  79. end;
  80.  
  81. end.
  82.