Pascal文本菜单音乐播放器

Pascal文本菜单音乐播放器,pascal,Pascal,我需要帮助创建我的音乐播放器,我收到了同样的错误,似乎无法克服它。非常感谢。 我在下面附上了我的代码以及我的错误 错误: 免费Pascal编译器版本2.6.4[2014/02/26],i386版权所有(c) Florian Klaempfl和其他人的1993-2014年目标操作系统:达尔文i386 编译MusicPlayer.pas MusicLayer.pas(82,37)错误:参数1的类型不兼容:获取“短字符串”,应为“唱片集” MusicLayer.pas(138,31)错误:参数1的类型

我需要帮助创建我的音乐播放器,我收到了同样的错误,似乎无法克服它。非常感谢。 我在下面附上了我的代码以及我的错误

错误:

免费Pascal编译器版本2.6.4[2014/02/26],i386版权所有(c) Florian Klaempfl和其他人的1993-2014年目标操作系统:达尔文i386 编译MusicPlayer.pas

MusicLayer.pas(82,37)错误:参数1的类型不兼容:获取“短字符串”,应为“唱片集”

MusicLayer.pas(138,31)错误:参数1的类型不兼容:Got “albumArray”,应为“Album”

MusicLayer.pas(164,44)错误:参数1的类型不兼容:获取“albumArray”,应为“Album”

pas(174)致命:编译模块时出现3个错误, 停止致命错误:编译中止错误:/usr/local/bin/ppc386 返回错误exitcode(如果未指定源,则为正常) (待编译的文件)

程序音乐层;
使用终端输入;
类型
记录
trackName:String;
位置:字符串;
结束;
TrackArray=轨道阵列;
唱片
相册名称:字符串;
艺人名称:弦;
体裁:弦乐;
轨迹:轨迹阵列;
//键:整数;
trackNum:整数;
文件名:字符串;
结束;
albumArray=相册的数组;
函数GetAlbums():albumArray;
变量
//anAlbum:专辑;
//相册:相册数组;
文件名:字符串;
myFile:TextFile;
numOfAlb:整数;
trackNum:整数;
i:整数;
j:整数;
开始
fileName:=ReadString('输入fileName:');
分配文件(myFile,文件名);
//AssignFile(myFile,'albums.dat');
重置(myFile);
ReadLn(myFile,numOfAlb);
setLength(结果,numOfAlb);
对于i:=0到高(结果)do
开始
ReadLn(myFile,结果[i].albumname);
ReadLn(myFile,result[i].artistName);
ReadLn(myFile,结果[i].genre);
ReadLn(myFile,trackNum);
setLength(结果[i]。track,trackNum);
对于j:=0到trackNum-1 do
开始
ReadLn(myFile,result[i].track[j].trackName);
ReadLn(我的文件,结果[i]。轨迹[j]。位置);
结束;
结束;
结束;
程序显示相册(a:相册);
变量
//t:轨道;
i:整数;
开始
WriteLn('唱片集名称为:',a.albumName);
WriteLn('专辑艺术家名称为:',a.artistName);
WriteLn('专辑类型为:',a.类型);
WriteLn('曲目数量为:',a.trackNum);
对于i:=0到高(a轨道)do
开始
WriteLn('曲目名称为:',a.Track[i].trackName);
WriteLn('唱片集名称为:',a.track[i].location);
结束;
结束;
函数PrintAllGenres(相册:albumArray):albumArray;
变量
i:整数;
开始
对于i:=0到高(相册)do
开始
显示相册(相册[i]。流派);
结束;
结束;
过程SelectAlbum(常量albums:albumArray);
变量
val:整数;
i:整数;
开始
WriteLn('>');
val:=ReadInteger('输入相册的键号:');
对于i:=0到高(相册)do
开始
WriteLn(“正在播放专辑”);
结束;
如果(i>高(相册)),则
开始
WriteLn('未找到相册,现在返回主菜单');
结束;
结束;
函数UpdateAlbum(a:相册):相册;
开始
a、 albumName:=ReadString('请为此相册输入新名称:');
a、 流派:=ReadString('请为此相册输入新流派:');
结束;
//函数UpdateAlbums():albumArray;
//变量
//val:整数;
//i:整数;
//开始
//WriteLn('>');
//val:=ReadInteger('输入相册的键号:');
//如果(val=True),则
//WriteLn('找到相册')
//否则
//WriteLn('未找到相册,现在返回主菜单');
//结束;
过程显示相册(相册:albumArray);
变量
val:整数;
开始
重复
WriteLn('>');
WriteLn('1.显示所有相册');
WriteLn('2.显示类型');
WriteLn('3.返回主菜单');
val:=ReadInteger('输入一个数字以进入菜单:');
案例val
1:显示相册(相册);
2:PrintAll体裁(专辑);
结束;
直到val=3;
结束;
程序Main();
变量
相册:相册数组;
val:整数;
开始
重复
WriteLn('>');
WriteLn(“1.读入相册”);
WriteLn(“2.显示相册”);
WriteLn('3.选择要播放的唱片集');
WriteLn('4.更新现有相册');
WriteLn('5.Quit');
val:=ReadInteger('输入一个数字以进入菜单:');
案例val
1:albums:=GetAlbums();
2:显示相册(相册);
3:选择相册;
4:相册:=UpdateAlbum(相册);
结束;
直到val=5;
结束;
开始
Main();
结束。

在您编写的代码中

procedure DisplayAlbum(a: Album);
    DisplayAlbum(albums[i].genre);
这意味着您需要将
相册
传递给过程,但在第82行您已经编写了

procedure DisplayAlbum(a: Album);
    DisplayAlbum(albums[i].genre);
流派
是一个
专辑
的字段,而您应该传递整个
专辑

将第82行更改为

    DisplayAlbum(albums[i]);
我把其他错误留给你自己去解决,这些错误非常相似,你现在应该能够把它们整理出来了。
正如我昨天告诉你的,你可能想(或者实际上需要)和你的导师谈谈,以便更好地理解。

在你编写的代码中

procedure DisplayAlbum(a: Album);
    DisplayAlbum(albums[i].genre);
这意味着您需要将
相册
传递给过程,但在第82行您已经编写了

procedure DisplayAlbum(a: Album);
    DisplayAlbum(albums[i].genre);
流派
是一个
专辑
的字段,而您应该传递整个
专辑

将第82行更改为

    DisplayAlbum(albums[i]);
我把其他错误留给你自己去解决,这些错误非常相似,你现在应该能够把它们整理出来了。
正如我昨天告诉你的,你可能想(或者实际上需要)和你的导师谈谈,以获得更好的理解。

Bravo,@Tom,+1,因为你建议OP真的和他的导师谈过这件事——在我看来,这些作业问题贴出来后,应该更经常发生