unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
if   OpenDialog1.Execute   then
        Memo1.Lines.LoadFromFile(OpenDialog1.FileName);end;procedure TForm1.Button3Click(Sender: TObject);
begin
 if saveDialog1.Execute then
memo2.Lines.SaveToFile(SaveDialog1.FileName);
end;procedure TForm1.Button2Click(Sender: TObject);type
  TMyPChar = array of char; var
  sssIn  : PChar;
  sssOut : TMyPChar;  procedure func(const sIn: PChar; var sOut: TMyPChar);
var
  a,b,c  : integer;
  name   : string;
  tempStr: string;
  P : PChar;begin
  Memo1.Text := 'a|b|nane|c|' ;
  begin  P := sIn;  tempStr := '';
  while P^<>'|' do begin
    tempStr := tempStr + P^;
    Inc(P);
  end;
  a := StrtoInt(tempStr);  Inc(P);
  tempStr := '';
  while True do begin
    if P^ = '|' then Break;
    tempStr := tempStr + P^;
    Inc(P);
  end;
  b := StrtoInt(tempStr);  Inc(P);
  tempStr := '';
  while True do begin
    if (P^ = '|') or (P^ = ' ') then Break;
    tempStr := tempStr + P^;
    Inc(P);
  end;
  name := tempStr;  Inc(P);
  tempStr := '';
  while True do begin
    if (P^ <> '|') and (P^ <> ' ') then
      tempStr := tempStr + P^;
    if P^ = #0 then Break;
    Inc(P);
  end;
  c := StrtoInt(tempStr);
  tempStr := Format('%d%s%d%d', [a, name, b, c]);  SetLength(sOut, Length(tempStr));
  CopyMemory(@sOut[0], @tempStr[1], Length(tempStr));  end;
   sssIn := @Memo1.Text[1];
   func(sssIn, sssOut);
  Memo2.Text := StrPas(@sssOut[0]);end;end.

解决方案 »

  1.   

    1.procedure func(const sIn: PChar; var sOut: TMyPChar); 
      这个函数为什么不实现
    2.-->SetLength(sOut, Length(tempStr)); 
      -->CopyMemory(@sOut[0], @tempStr[1], Length(tempStr));   --〉P := sIn;   var 
      sssIn  : PChar; 
      sssOut : TMyPChar; 
      你定义的变量名为sssOut和sssIn,为什么调用的时候用sOut,sIn ,要知道Sin是求三角函数的系统函数