2016-09-02 10 views
3

Я загрузки файла RichEdit используя следующий код:Открытие файла RTF в Delphi генерирует ошибку

RichEdit1.Lines.LoadFromFile('xxx.rtf'); 

Это хорошо работает. Однако, когда я использую TOpenDialog следующим образом:

with DlgOpen do if Execute then RichEdit1.Lines.LoadFromFile(FileName); 

У меня проблема. Файловые нагрузки в порядке, но оставляет следующее сообщение об ошибке на рабочем столе:

error message

Я использую Delphi 2010 был создан файл в формате RTF с помощью Microsoft Word 2007, и я бегу Win10. Как я могу избавиться от сообщения об ошибке?

+5

Di вас есть панель предварительного просмотра откроется в вашем диалоге файла –

+0

Некоторые файлы RTF не может быть считан RichEdit. Я столкнулся с этим особенно при встрече с файлами UTF-8 или Unicode. –

+0

Имеет ли значение, если вы удаляете конструкцию 'with do ..' и явно указываете ее? –

ответ

0

Если вы не можете помешать файлу предварительного просмотра заблокировать файл, который хотите прочитать, я бы оборачивал его, не загружая непосредственно этот файл, а копия его.

uses IOUtils; 
.... 
.... 
var TempFile: string; 
.... 
if DlgOpen.Execute then 
begin 
    TempFile := IncludeTrailingPathDelimiter(TPath.GetTempPath) + 'Temp.rtf'; 
    CopyFile(PChar(DlgOpen.FileName), PChar(TempFile), False); 
    RichEdit1.Lines.LoadFromFile(TempFile); 
    DeleteFile(TempFile); 
end; 
+0

Я не мог заставить ваш код работать. Однако запустите мой исходный код "с помощью DlgOpen do, если выполнить, затем RichEdit1.Lines.LoadFromFile (FileName);" больше не генерирует никаких сообщений об ошибках. Очень странно. – Rudi

+0

Извините, проблема вернулась. Довольно раздражает. – Rudi

+0

Это не то, как вы получаете каталог temp, и это не то, как вы коммитесь в пути. И не создавайте имя файла дважды. Используйте переменную. Необходимо больше внимания. –

Смежные вопросы