【发布时间】:2014-08-12 19:16:58
【问题描述】:
我是 Delphi Noob,我已经搜索并逐步浏览了我的代码,但不明白为什么会输出一个没有内容的文本文件。它应该在有效的对话框中打开一个文本文件,它分配所选文件origFile,然后我想将该文件分配给另一个名为myFile 的文件,这样我就可以在不改变实际原始文件的情况下进行操作,然后我想将myFile 保存为(sOrigFileName + 'B.BACKWARDS.TXT'),但它会跳过while not Eof(origFile) do 并转到CloseFile。我在下面发布我的代码。
要求是使用TextFile 与TStringList,否则我会使用TStringList 完成此操作。另一个问题是它指出myFile 没有找到,我认为assignFile(myFile, sOrigFileName); 正在创建myFile....
procedure TForm1.btnOpenFileCClick(Sender: TObject);
var
origFile, myFile : TextFile;
OpenDialog1 : TOpenDialog;
sOrigFileName, sNewFileName, sLine, sNewLine : String;
begin
//Selects txt File of the users choosing
OpenDialog1 := TOpenDialog.Create(self);
OpenDialog1.Filter := '*.txt';
if OpenDialog1.Execute then
begin
//AssignFile(origFile, OpenDialog1.FileName);
sOrigFileName := OpenDialog1.FileName;
AssignFile(origFile, sOrigFileName);
end;
//BACKWARDS
sNewFileName := sOrigFileName + '.B.BACKWARDS.TXT';
DeleteFile(sNewFileName); //Delete old File if exists
AssignFile(myFile, sNewFileName);
Reset(origFile);
while not Eof(origFile) do
begin
Rewrite(myFile);
Readln(origFile, sLine); //takes line into a string Var
sNewLine := AnsiReverseString(sLine); //reverses and places to new Var
WriteLn(myFile,sNewLine);
end;
//Clean up
CloseFile(OrigFile);
CloseFile(myFile);
【问题讨论】:
-
Chiastic-Security 提到将 ReWrite 移动到 Reset(OrigFile) 下,这修复了 myFile not found 问题。最后仍然得到一个空白文本文件与内容已被反转的文本文件
-
你为什么使用旧的 Pascal 风格?使用 TStringList,正如 Remy 演示的那样。这是最简单的,除非您的文件非常大(TStringList 会将其完全加载到内存中,并且在此过程中,它还需要一些额外的内存)。
标签: delphi text-files