Newb101
Newb101

Reputation: 147

Error loading txt files to synedit

I'm trying to load the text from a text file to a synmemo by using

procedure TForm1.btn7Click(Sender: TObject);
begin
  if dlgOpen1.Execute then
    synm1.Lines.LoadFromFile(dlgOpen1.Files.Text);
end;

But as soon as I select a file i get this error:

Cannot open file "C:\Users\adria\Desktop\New Text Document.txt
". The filename, directory name, or volume label syntax is incorrect.

Component: https://github.com/TurboPack/SynEdit

Upvotes: -1

Views: 221

Answers (1)

Deltics
Deltics

Reputation: 23056

The problem is in the use of the Files property of the dialog to access the selected filename.

The Files property is a list of strings intended for use when you have enabled multiple selection in the dialog and need to process more than one filename selected by the user.

The Text property of string list returns a formatted representation of all entries in that list with each entry delimited by an EOL character (or characters).

You might expect that where only a single file is involved that this Textproperty would contain only the name of that file. But in fact it also includes an EOL character. i.e. the filename you are trying to open by using this technique is actually:

'C:\Users\adria\Desktop\New Text Document.txt'#13#10

There was actually a clue to this in the way that the message was being displayed, with the closing quotes on a separate line as a result of that EOL.

The correct way to work with the selected filename depends on whether you are supporting multiple selection or single.

In the case of single selection (your case here) the simplest approach is to use the Filename property of the dialog:

if dlgOpen1.Execute then
  synm1.Lines.LoadFromFile(dlgOpen1.Filename);

For multiple selection you would use the Files property, but access each filename by index in the list:

if dlgOpen1.Execute then
  for i := 0 to Pred(dlgOpen1.Files.Count) do
  begin
    // Do something with each dlgOpen1.Files[i] ...
  end;

Upvotes: 1

Related Questions