Function Pascal函数是循环的

Function Pascal函数是循环的,function,reverse,pascal,freepascal,Function,Reverse,Pascal,Freepascal,为什么这个代码不起作用 当我执行时,windows会停止它,因为可能是循环和停止工作 function revstr(a:string):string; var out_s:string; ls,i:integer; begin ls:=11; for i:=1 to ls do out_s:=out_s+a[ls-i+1]; revstr:=out_s; end; 您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的

为什么这个代码不起作用

当我执行时,windows会停止它,因为可能是循环和停止工作

function revstr(a:string):string;
  var out_s:string;
  ls,i:integer;

  begin
    ls:=11;

    for i:=1 to ls do
      out_s:=out_s+a[ls-i+1];

    revstr:=out_s; 
  end;

您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素

这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11

最好按照以下方式编写函数:

Function Reverse (const a: string): string;
var
 i: integer;

begin
 result:= '';
 for i:= length (a) downto 1 do
  result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作

Function Reverse (const a: string): string;
var
 i, j: integer;
 P: PChar;

begin
 SetLength (Result, Length (a));
 P:= Pchar (Result);
 j:= 0;
 for i:= length (a) downto 1 do
  begin
   p[j]:= a[i];
   inc (j)
  end; 
 end;

您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素

这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11

最好按照以下方式编写函数:

Function Reverse (const a: string): string;
var
 i: integer;

begin
 result:= '';
 for i:= length (a) downto 1 do
  result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作

Function Reverse (const a: string): string;
var
 i, j: integer;
 P: PChar;

begin
 SetLength (Result, Length (a));
 P:= Pchar (Result);
 j:= 0;
 for i:= length (a) downto 1 do
  begin
   p[j]:= a[i];
   inc (j)
  end; 
 end;

您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素

这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11

最好按照以下方式编写函数:

Function Reverse (const a: string): string;
var
 i: integer;

begin
 result:= '';
 for i:= length (a) downto 1 do
  result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作

Function Reverse (const a: string): string;
var
 i, j: integer;
 P: PChar;

begin
 SetLength (Result, Length (a));
 P:= Pchar (Result);
 j:= 0;
 for i:= length (a) downto 1 do
  begin
   p[j]:= a[i];
   inc (j)
  end; 
 end;

您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素

这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11

最好按照以下方式编写函数:

Function Reverse (const a: string): string;
var
 i: integer;

begin
 result:= '';
 for i:= length (a) downto 1 do
  result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作

Function Reverse (const a: string): string;
var
 i, j: integer;
 P: PChar;

begin
 SetLength (Result, Length (a));
 P:= Pchar (Result);
 j:= 0;
 for i:= length (a) downto 1 do
  begin
   p[j]:= a[i];
   inc (j)
  end; 
 end;

我a没有转移好,因为当我写a时,a中是不同的符号,不是单词…我a没有转移好,因为当我写a时,a中是不同的符号,不是单词…我a没有转移好,因为当我写a时,a中是不同的符号,不是单词…我a没有转移好,因为当我写a时,在一个世界里,是不同的符号,而不是单词。。。