Hi, After staring myself blind for several hours on why my program malfunctioned, I finally noticed a difference in behaviour between SynEdit.Lines.LoadFromFile and e.g. TMemo.Lines.LoadFromFile with regard to non-ascii characters in filenames.
As I understood it the proper way to open files, when getting the filename form a control like a TOpenDialog is to first convert the Utf8 string to Ansi/Systme-enccoding and then use this converted string in LoadFromFile(): begin Utf8Fn := Opendialog1.Filename; //convert to system encoding (I am on Windows), using FileUtils unit AnsiFn := Utf8ToSys(Utf8Fn); //Use converted string in LoadFromFile() SynEdit1.LoadFromFile(AnsiFn); end; This however throws an exception when using a filename like äbc.txt. The exceptionmessage is: Unable to open file "F:\LazarusProjecten\bugs\FileNames\?bc.txt" (Notice the ? in the name, this message was coverted back to Utf8 to show it in a TMemo) If I do NOT convert the string first, the SynEdit loads the file just fine. This behaviour however, is exactly the opposite of e.g TMemo, where you MUST convert the filename to Ansi/System encoding, or the LoadFromFile() will fail. I find this a bit confusing, to say the least. Does anyone know if this behaviour (and thus the discrepancy with e.g. TMemo) is by design or a bug? B.t.w. I tested this behaviour on WinMe (Win9x)/vFat filesystem, and at first I thougt it might be just an OS issue, but the behaviour is the same on Win7/NTFS (Laz. r32445/Fpc 2.4.4). Bart -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
