我正在为学校(电影应用程序)制定一个计划,但我的阵列有问题。我的应用程序关闭但没有显示任何内容。
program TFE;
{$APPTYPE CONSOLE}
uses
SysUtils,
StrUtils,
Crt;
var
MovieList, MovieInfo: Text;
Choice: Byte;
i: Integer;
L: String;
S: array of String[14];
begin
i := 0
Assign(MovieInfo, 'MovieInfo.txt');
Reset(MovieInfo);
Readln(Choice);
i := 0;
ClrScr;
While not eof (MovieInfo) do
begin
Readln(MovieInfo, L);
S[i] := L;
i := i + 1;
end;
Writeln(S[Choice]);
Readln;
end.
这是我目前的所有代码。
有人可以帮助我吗?
最佳答案
在标题中,您谈到了一个变量 MyVar
,但代码没有显示任何这样的变量。为了将来引用,请在发布前仔细校对您的问题。
您已经声明了一个动态数组:
S: array of String[14];
即 14 个字符串(短字符串)的数组。但是你从来没有设置过这个数组的长度,所以它根本不能保存任何字符串。
使用
procedure SetLength(var S: <string or dynamic array>; NewLength: Integer);
为数组中的项目分配空间。由于您不知道(我推测)文件中可能有多少部电影,您必须首先分配一些数量,然后准备扩展数组(通过新调用
SetLength()
)如果数组之前被填满从文件中读取所有电影。例如,初始化(在 while 循环之前)有 10 部电影的空间:SetLength(S, 10);
然后在while循环中,例如就在
ReadLn()
之前,if i > (Length(S)-1) then
SetLength(S, Length(S)+10);
另一条评论是,当要求用户选择时,不会向用户显示任何提示,但也许这仍在开发中;-)
关于Delphi 数组 : Variable Myvar might not been initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199027/