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

📄 main.~pas

📁 《Kylix程序设计》一书中附带的例程源代码
💻 ~PAS
字号:
unit Main;interfaceuses  SysUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDialogs,  QStdCtrls;type  TFrmMain = class(TForm)    Memo: TMemo;    BtnShow: TButton;    BtnShowMsg: TButton;    BtnCast: TButton;    procedure BtnShowClick(Sender: TObject);    procedure BtnShowMsgClick(Sender: TObject);    procedure BtnCastClick(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;  PInt = ^Integer;  TRec = record    case Boolean of      true:  ( I: Integer; );      false: ( P: PInt; );  end;  PRec = ^TRec;var  FrmMain: TFrmMain;  X, Y: Integer;  P1, P2, Q: PInt;  Rec1, Rec2: TRec;  Msg: string;implementation{$R *.xfm}procedure TFrmMain.BtnShowClick(Sender: TObject);label  1, 2, 3, 4, 5, 6, 7, 8, 9, 10;begin  Memo.Lines.Clear();//  Memo.Lines.Add( IntToHex( Integer( P1 ), 8 ) );  1: X := 100;  Msg := 'X: $' + IntToHex( X, 8 );  Memo.Lines.Add( Msg );  Msg := '@X: $' + IntToHex( Integer( @X ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  2: Y := 1024;  Msg := 'Y: $' + IntToHex( Y, 8 );  Memo.Lines.Add( Msg );  Msg := '@Y: $' + IntToHex( Integer( @Y ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  3: Rec1.P := @X;  Msg := '@Rec1: $' + IntToHex( Integer( @Rec1 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'Rec1.P: $' + IntToHex( Integer( @Rec1.P ), 8 );  Memo.Lines.Add( Msg );  Msg := 'Rec1.I: $' + IntToHex( Rec1.I, 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  4: New( P1 );  Msg := 'P1: $' + IntToHex( Integer( P1 ), 8 );  Memo.Lines.Add( Msg );  Msg := '@P1: $' + IntToHex( Integer( @P1 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P1^: $' + IntToHex( Integer( P1^ ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  5: P1^ := 256;  Msg := 'P1^: $' + IntToHex( P1^, 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  6: P2 := P1;//  Msg := 'P2^: $' + IntToStr( P2^ );  Msg := '@P2: $' + IntToHex( Integer( @P2 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P2: $' + IntToHex( Integer( P2 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P2^: $' + IntToHex( Integer( P2^ ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  7: Q := @Rec1;  Msg := '@Q: $' + IntToHex( Integer( @Q ), 8 );  Memo.Lines.Add( Msg );  Msg := 'Q: $' + IntToHex( Integer( Q ), 8 );  Memo.Lines.Add( Msg );  Msg := 'Q^: $' + IntToHex( Integer( Q^ ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  8: Rec2 := Rec1;  Msg := '@Rec2: $' + IntToHex( Integer( @Rec2 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'Rec2.I: $' + IntToHex( Rec2.I, 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  9: P1^ := P2^;  Msg := '@P1: $' + IntToHex( Integer( @P1 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P1: $' + IntToHex( Integer( P1 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P1^: $' + IntToHex( Integer( P1^ ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  10: P1^ := Integer( P2 );  Msg := '@P1: $' + IntToHex( Integer( @P1 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P1: $' + IntToHex( Integer( P1 ), 8 );  Memo.Lines.Add( Msg );  Msg := 'P1^: $' + IntToHex( Integer( P1^ ), 8 );  Memo.Lines.Add( Msg );  Memo.Lines.Add( '------------------------------' );  Dispose( P1 );end;procedure TFrmMain.BtnShowMsgClick(Sender: TObject);var  Return: TMessageButton;  pText, pCaption: PChar;begin  pText := 'Hello, June';  pCaption := 'Greeting';  Return := Application.MessageBox( pText, pCaption,    [ smbOK, smbCancel ], smsInformation, smbOK, smbCancel );  case Return of    smbOK: ;    smbCancel: ;  end;end;procedure TFrmMain.BtnCastClick(Sender: TObject);label  1, 2, 3, 4, 5, 6, 7, 8;var  i: Integer;  s, s1, s2: string;  p, p1, p2: PChar;begin{  1: SetLength( s1, 8 );  2: SetLength( s2, 20 );  3: s1 := 'June';  Memo.Lines.Add( 'After 3, s1 = ' + s1 );  4: p1 := PChar( s1 );  Memo.Lines.Add( 'After 4, s1 = ' + s1 );  Memo.Lines.Add( 'After 4, p1 = ' + p1 );  5: s1 := 'July';  Memo.Lines.Add( 'After 5, s1 = ' + s1 );  Memo.Lines.Add( 'After 5, p1 = ' + p1 );//  UniqueString( s1 );  6: s2 := ' is';  Memo.Lines.Add( 'After 6, s2 = ' + s2 );  7: p2 := PChar( s1 + s2 );  Memo.Lines.Add( 'After 7, s2 = ' + s2 );  Memo.Lines.Add( 'After 7, p2 = ' + p2 );  8: s2 := s2 + ' half a year.';  Memo.Lines.Add( 'After 8, s2 = ' + s2 );  Memo.Lines.Add( 'After 8, p2 = ' + p2 );//  Memo.Lines.Add( p2 );//  Memo.Lines.Add( p1 );}{//  SetLength( s, 10 );  s := 'June';  UniqueString( s );//  SetString( s, nil, 0 );  p := PChar( s );  for i := 0 to 2 do p[i] := 'M';//  p[0] := Char( 'C' );//  SetLength( s, 2 );//  s := Copy( s, 0, 2 );//  SetString  Memo.Lines.Add( p );  // MMMe}{  s := 'June';  UniqueString( s );  // No this, no P[3]//  SetString( s, nil, 0 );  p := PChar( s );  for i := 0 to 2 do p[i] := 'M';  Memo.Lines.Add( 'p = ' + p );  // MMMe  Memo.Lines.Add( 's = ' + s );  p[3] := #0;  Memo.Lines.Add( 'p = ' + p );  // MMM  Memo.Lines.Add( 's = ' + s );}end;end.

⌨️ 快捷键说明

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