13
2016
12

Delphi7中使用AssignFile时遇到长文件名报错的BUG

Delphi7中使用AssignFile时遇到长文件名报错的BUG:

procedure TForm1.btn1Click(Sender: TObject);
var
  file1: file;
  filename: string;
  Buf: array[1..5] of Char;
  i: Integer;
begin
  edt1.Text := '';
  filename := 'D:\一二三四五六七八九十1\一二三四五六七八九十2\一二三四五六七八九十3\一二三四五六七八九十4\一二三四五六七八九十5\'
    + '一二三四五六七八九十6\一二三四五六七八九十7\一二三四五六七八九十8\一二三四五六七八九十9\一二三四五六七八九十0\'
    + '一二三四五六七八九十1\一二三四五六七八九十2\一二三四五六七八九十3\一二三四五六七八九十4\一二三四五六七八九十5\'
    + '一二三四五六七八九十6\一二三四五六七八九十7\一二三四五六七八九十8\一二三四五六七八九十9\一二三四五六七八九十0\'
    + '123456789012.txt';
  //ShowMessage(IntToStr(Length(filename)));//459
  filename := ExtractShortPathName(filename);
  //ShowMessage(IntToStr(Length(filename)));//195
  AssignFile(file1, filename);
  FileMode := 0;
  Reset(file1, 1);
  BlockRead(file1, Buf, SizeOf(Buf), i);
  CloseFile(file1);
  edt1.Text := Buf;
end;

将长文件名转为短文件名后,再AssignFile就可以了:

«1»