Windows XP/7/10을 대상으로하는 Lazarus (1.5) fpc (3.1.1)로 응용 프로그램을 작성하고 있습니다. 내 응용 프로그램은 사용자가 선택한 경로의 파일 시스템에서 파일을 읽고 씁니다. 경로 또는 파일 이름 (예를 들어 à è é 같은) 특수 문자를 포함 할 경우Lazarus ListBox SaveToFile 특수 문자가있는 파일 이름
C :
'EFCreateError'없음에 : \ 사용자 \ DeAndrè \
응용 프로그램 out.txt 예외를 제기 "C : \ Users \ DeAndrè \ out.txt"파일을 작성하십시오. A 형 TListBox (에 ListBox1)로 드래그 두 TButton으로 (Button1을하고 Button2를) 및 TSaveDialog (SaveDialog1)
는 sigle 양식 간단한 애플리케이션을 작성하는 방법이 문제를 재생할 수있다. 일부
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
ListBox1.Items.SaveToFile(SaveDialog1.FileName);
end;
end;
응용 프로그램을 실행하고 "Button1을"클릭
procedure TForm1.Button1Click(Sender: TObject);
begin
// Simple Add Hello to ListBox
ListBox1.Items.Add('Hello '+IntToStr(ListBox1.Items.Count));
end;
Button2를의 OnClick 이벤트에서 : Button1을의 OnClick 이벤트에
은 (에 ListBox1에 일부 데이터를 작성하는 경우에만 사용) (목록에 단어를 추가하기 위해) Button2를 클릭하고 특수 문자가 포함 된 경로에 내용을 저장하려고 시도하면 ...FileNa를 변환하면 내가 작동 UTF8ToAnsi와 함께,하지만 왜 작동합니까? Windows FileSystem은 UTF8이 아닙니까?
"표준"해결책이 있습니까? 예를 들어 올바른 모드 또는 이와 유사한 방식으로 파일 시스템을 사용하도록 응용 프로그램을 설정합니까? "프로젝트"에
: 당신은 "사용자 지정 옵션"에 -dEnableUTF8RTL를 추가해야합니다 UnicodeAPI를 사용하는 나사로를 사용하려면 :
내가 해결책을 발견 루디 다윗의 방향 후에 당신에게
@RudyVelthuis은 [링크] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd317748 (V = 대에 따라, 내 Windows 설치는 NTFS 파일 시스템을 사용하여 주셔서 감사합니다. 85) .aspx)는 유니 코드 – AndreaBoc
유니 코드 API를 호출하는 lazarus 코드 –
@David 델파이 (XE8)의 동일한 샘플 코드가 오류없이 작동합니다 ... – AndreaBoc