Delphi-Seek();程序。不兼容类型
procedure ListMembers;
var
Member, lMembers: string;
lengthOfMember: Longint;
begin
Writeln;
Writeln;
Reset(FileA); //Only need read-only
Reset(FileB); //Only need read-only
while not Eof(FileA) do
begin
Readln(FileA, lMembers);
Write(lMembers);
end;
Writeln(sLineBreak + sLineBreak);
Write('Type the name of the member for more information: ');
Readln(Member);
lengthOfMember := Length(Member) + 2;
Seek(FileB, lengthOfMember);
end;
我在尝试编译时遇到问题。寻求();最后一行返回错误不兼容类型。据我在网上读到的,Seek 接受 var: File 和 var: longint,所以我不明白为什么它被认为是一个坏类型,因为我给它提供了一个文件和一个 longint。
FileB 被分配给代码主要部分中的文本文件。这部分只是一个过程。
感谢任何帮助。更多的代码如下。
program WoWProject;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TMember = record
Name : string;
Level : integer;
CharClass : string;
Role : string;
Spec : string;
DKP : integer;
end;
var
FileA, FileB : Textfile;
//THIS PART IS THE PROCEDURE ABOVE
//ANOTHER PROCEDURE HERE UNRELATED TO THIS
//ANOTHER HERE WHICH IS THE WELCOME PROCEDURE
//MAIN
begin
Assign(FileA, 'CharacterNames.txt');
Assign(FileB, 'CharacterInfo.txt');
repeat
Append(FileA);
Append(FileB);
Welcome;
until 1=2
end.
procedure ListMembers;
var
Member, lMembers: string;
lengthOfMember: Longint;
begin
Writeln;
Writeln;
Reset(FileA); //Only need read-only
Reset(FileB); //Only need read-only
while not Eof(FileA) do
begin
Readln(FileA, lMembers);
Write(lMembers);
end;
Writeln(sLineBreak + sLineBreak);
Write('Type the name of the member for more information: ');
Readln(Member);
lengthOfMember := Length(Member) + 2;
Seek(FileB, lengthOfMember);
end;
I get a problem here when trying to compile. The Seek(); on the last line returns the error incompatible type. As far as I've read online, Seek takes in var: File and var: longint so I don't see why it's considered a bad type as I'm feeding it a file, and a longint.
FileB was Assigned to a text file in the main section of the code. This part is just a procedure.
Appreciate any help. More of the code below.
program WoWProject;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TMember = record
Name : string;
Level : integer;
CharClass : string;
Role : string;
Spec : string;
DKP : integer;
end;
var
FileA, FileB : Textfile;
//THIS PART IS THE PROCEDURE ABOVE
//ANOTHER PROCEDURE HERE UNRELATED TO THIS
//ANOTHER HERE WHICH IS THE WELCOME PROCEDURE
//MAIN
begin
Assign(FileA, 'CharacterNames.txt');
Assign(FileB, 'CharacterInfo.txt');
repeat
Append(FileA);
Append(FileB);
Welcome;
until 1=2
end.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
该文档描述
Seek()
如下:这就是你的问题所在。
The documentation describes
Seek()
as so:Herein lies your problem.
您可以使用以下过程:
但请注意,上述内容仅用于从文件中读取。如果写入文件,则只需覆盖文件中的字节,无论是否有换行符(无法在现有文本文件中“插入”文本)。
You can use this procedure:
But beware that the above is intended only for READING from the file. If you WRITE to the file, you simply overwrite the bytes in the file, regardless of any line breaks or not (there's no way to "insert" text in an existing text file).
定义 RECORD 类型并以 record 或 TFileStream 打开文件。
再次编写您的代码,然后询问。你有许多不同的代码部分......我不知道。
像这样定义(示例):
在这种情况下,您必须输入字符串的长度。 Seek 将按照您的意愿工作;)
您可以更改:
从:
到:
Define RECORD type and open file as record or TFileStream.
Write Your code again and then ask. You have many different code parts from... i'dont know.
Define like this (example):
You must enter length of strings in this case. And Seek will work as You wish ;)
You can change:
from:
to: