문제

어떤 이유로, 최근에 많은 클라이언트 시스템의 *.udl 파일은 한 번 ANSI 파일로 저장되었으므로 더 이상 예상 유니 코드 파일 형식과 호환되지 않기 때문에 더 이상 호환되지 않습니다. 최종 결과는 "파일이 유효한 화합물 파일이 아님"을 나타내는 오류 대화 상자입니다.

이러한 파일을 프로그래밍 방식으로 열고 유니 코드 파일로 저장하는 가장 쉬운 방법은 무엇입니까? 나는 메모장에서 각각을 열고 동일한 파일로 저장하지만 저장의 인코딩 섹션에서 선택한 "유니 코드"를 사용 하여이 작업을 수행 할 수 있다는 것을 알고 있지만 지원을 줄이기 위해 프로그램 에서이 작업을 수행해야합니다. 전화.

이 문제는 복제하기가 매우 쉽고 디렉토리에서 *.txt 파일 만 만들고 *.udl로 이름을 바꾼 다음 Microsoft 편집기를 사용하여 편집합니다. 그런 다음 메모장으로 열고 파일로 ANSI 인코딩 파일로 저장하십시오. UDL 편집기에서 UDL을 열면 부패를 알려줍니다. 그런 다음 유니 코드 인코딩 된 파일로 (메모장 사용) 저장하면 다시 올바르게 열립니다.

도움이 되었습니까?

해결책

이것은 내와 관련하여 매우 간단합니다 tgptextfile 단위. 짧은 샘플을 모아서 여기에 게시하겠습니다.

또한 New Delphi 2009에서는 매우 간단해야합니다. 아마도 그것을 사용하고 있습니까?

편집 : 2009 년 이전의 델파이에서 내 물건을 사용하여 할 수있는 방법.

var
  strAnsi   : TGpTextFile;
  strUnicode: TGpTextFile;
begin
  strAnsi := TGpTextFile.Create('c:\0\test.udl');
  try
    strAnsi.Reset; // you can also specify non-default 8-bit codepage here
    strUnicode := TGpTextFile.Create('c:\0\test-out.udl');
    try
      strUnicode.Rewrite([cfUnicode]);
      while not strAnsi.Eof do
        strUnicode.Writeln(strAnsi.Readln);
    finally FreeAndNil(strUnicode); end;
  finally FreeAndNil(strAnsi); end;
end;

라이센스 : 위의 코드 조각은 공개 도메인에 속합니다. 어쨌든 당신이 좋아하는 것을 사용하십시오.

다른 팁

자, Delphi 2009를 사용하여 작동하는 다음 코드를 생각해 낼 수 있었지만이 변환을 수행하는 올바른 방법입니까?

var
  sl : TStrings;
  FileName : string;
begin
  FileName := fServerDir+'configuration\hdconfig4.udl';
  sl := TStringList.Create;
  try
    sl.LoadFromFile(FileName, TEncoding.Default);
    sl.SaveToFile(FileName, TEncoding.Unicode);
  finally
    sl.Free;
  end;
end;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top