gpt4 book ai didi

delphi - Delphi错误: Got “untyped” , expected “AnsiString”

转载 作者:行者123 更新时间:2023-12-03 17:38:12 24 4
gpt4 key购买 nike

以下是我正在处理的文件预览系统项目的示例。主窗体上有两个ListBoxes。第一个[lst_fileList]显示目录[files]中所有“.txt”文件的列表,每个文件的标签为[order ###。txt],其中###是1到999之间的任何数字。该过程将运行,它将在列表框中找到选定的项目(.txt文件),然后在第二个ListBox [lst_filePreview]上显示文件中的每一行。

尽管在运行时,在ReadLn(selectedFile)的第21行出现了错误。错误状态(不兼容类型:“未类型化”,预期为“AnsiString”)。

我已经研究了这个错误几个小时,但无济于事。我们将不胜感激,谢谢。

procedure TForm1.btn_getPreviewClick(Sender: TObject);
var
checkSelect:integer;
orderSelect:string;
i:integer;
selectedFile:textFile;
begin
if lst_fileList.SelCount > 0 then
begin
for checkSelect:= 0 to (lst_fileList.Items.Count - 1) do
if lst_fileList.Selected [checkSelect] then
begin
orderSelect:=lst_fileList.Items[checkSelect];
orderSelect:=RightStr(orderSelect,3);
if fileexists('files\order'+orderSelect+'.txt') then
begin
assignFile(selectedFile,'files\order'+orderSelect+'.txt');
reset(selectedFile);
while not EOF(selectedFile) do
begin
lst_filePreview.Items.Add(readLn(selectedFile)); // Error occurs here: //
end;
closeFile(selectedFile);
end;
end;
end else
ShowMessage('Please select an item first!');
end;

最佳答案

您的密码

  lst_filePreview.Items.Add(readLn(selectedFile));

尝试使用Readln作为函数。它不是。正式而言,它是一个过程,就像一个返回void(未键入)的函数。实际上,这是一个神奇的编译器过程,根据其实际尝试读取的内容,编译器会插入对不同运行时函数或过程的调用。

您可能希望完全摆脱旧的Pascal风格的例程,而改用流,但是现在尝试:
  s: string

...

Readln(selectedFile, s);
lst_filePreview.Items.Add(s);

请阅读 Standard Routines and Input-Output上的Delphi DocWiki注释,说:

Note: For new programs, you might want to use the File Management classes and functions in the System.Classes and System.SysUtils units. System.Classes.TStream and its descendent classes are currently recommended for general file handling in Delphi (for related routines, see Streams, Reader and Writers). For text-file handling, TStreamReader and TStreamWriter are recommended over calling Write and Writeln. API Categories Index contains lists of related routines and classes.



如果您的 lst_filePreview实际上是 TListBox,您甚至可以执行以下操作:
lst_filePreview.Items.LoadFromFile('files\order'+orderSelect+'.txt');

并保存整个阅读代码。我可能会改用 TMemo来做:
FilePreviewMemo.Lines.LoadFromFile('files\order'+orderSelect+'.txt');

关于delphi - Delphi错误: Got “untyped” , expected “AnsiString” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26325871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com