kkuzil.own@gmail.com

Posted
Filed under Development/Delphi
아무리


[Delphi] fastreport 에서 PDF로 Export 시 한글 깨지는 문제


에서 나온데로 해보아도 해결이 되지 않아 이것저것 시도하면서 잡질하는데..

결국 알아냈다.

frxReport 컴포넌트에서 리포트 작성시 사용되는 Memo 컨트롤의
Font를 기본에서 "굴림"으로 바꿔주니깐 해결되더라! 아놔...

어쨌든 해결

끝.
2013/09/25 10:04 2013/09/25 10:04
Posted
Filed under Development/Delphi
http://www.delmadang.com/community/bbs_view.asp?bbsNo=3&bbsCat=0&st=&keyword=&indx=399313&keyword1=&keyword2=&page=3

소스를 직접 수정해 줘야 한다고 한다...ㄷㄷ ;;

이걸 직접 알아낸 김문수님께 감사를..!



----------------------------------------------------------


FastReport가 또 업그레이드를 하면서 코드를 바꿨네요...

언제까지 수정을 계속해야 하는지...
 

유니코드 때문에 한글이 깨져 나가네요 ㅜ.ㅜ

 

frxPDFFile.pas

 

라인: 329

 

//기존 function HexEncode7F(Str: WideString): string;

 function HexEncode7F(Str: String): string;

 

라인 2126

//기존       WriteLn(Stream, '/DescendantFonts [' + IntToStr(Index + 1 + Parent.FStartFonts) + ' 0 R]');

  WriteLn(Stream, '/DescendantFonts [' + IntToStr(Parent.FFontDCnt + Parent.FStartFonts) + ' 0 R]');



 

frxExportXML.pas

 

라인: 310

//기존      'ss:FontName="' + EStyle.Font.Name + '" '+

   'ss:FontName="' + UTF8Encode(EStyle.Font.Name) + '" '+

라인: 427

//기존 s := ChangeReturns(UTF8Encode(s));

//기존 WriteExpLn('<Data' + si + '>' + s + '</Data>');

      s := ChangeReturns(s);

      WriteExpLn('<Data' + si + '>' + UTF8Encode(s) + '</Data>');





frxExportHTML.pas

 

라인: 332

//기존        WriteExpLn(' font-family: ' + EStyle.Font.Name + ';'#13#10 +

      WriteExpLn(' font-family: ' + UTF8Encode(EStyle.Font.Name) + ';'#13#10 +





frxRes.pas



라인: 192

//기존    Result := _UnicodeToAnsi(FValues[Integer(FNames.Objects[i])], DEFAULT_CHARSET, FCP) else

    Result := FValues[Integer(FNames.Objects[i])] else



마지막으로... 누가 좀 리소스를 한글화해서 FastReport사에 등록 좀해 주세요...

FastReport 버전업시 다른 나라 랭귀지 추가 할 때 마다 부럽네요 ㅜ.ㅜ
2013/09/23 19:59 2013/09/23 19:59
Posted
Filed under Development/Delphi

GExpert 기능 중 시간을 찍어주는 기능있다.
주석을 달때 시간을 찍어주면 언제 기록한 건지 알수 있는 기능인데 단축키는 Ctrl + Alt + A 이다.

설정에서 시간 형식과 기타 단어를 추가해 줄 수 있다.

메뉴 > GExperts > Configuration... > Editor Experts 탭 > Insert Date/Time

내가 쓰는 형식 = yy_MMdd hh:mm:ss "sunk" (문자는 따옴표로 묶어준다)

@GExperts 단축키 정보와 중복이지만 시간 형식등을 더 추가 한다.


http://sunkj81.cafe24.com/textcube/entry/Delphi-GExperts-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%8B%A8%EC%B6%95%ED%82%A4
2013/08/08 14:52 2013/08/08 14:52
Posted
Filed under Development/Delphi
델파이에서 WNetUseConnection()의 사용 형식은 아래와 같다.


function WNetUseConnection(hwndOwner: HWND;
  var lpNetResource: TNetResource; lpUserID: PWideChar;
  lpPassword: PWideChar; dwFlags: DWORD; lpAccessName: PWideChar;
  var lpBufferSize: DWORD; var lpResult: DWORD): DWORD;

하지만 수십번의 잡질끝에 알아낸건
lpUserID: PWideChar 와 lpPassword: PWideChar 의 위치가 바뀌었다는 것...
왜 안될까 계속 시도해 보고 생각해본 결과 혹시나 해서 바꿔 봤는데... 역시나...

WNetAddConnection2() 이거는



function WNetAddConnection2(var lpNetResource: TNetResource;
  lpPassword, lpUserName: PWideChar; dwFlags: DWORD): DWORD;

이렇게 잘 나와있다.

델파이의 이런 오류들은 필히 기록하자.
2013/07/23 16:43 2013/07/23 16:43
Posted
Filed under Development/Delphi
.EXE 파일의 리소스를 열고 고치고 싶어서...


LoadLibrary(..)  > FindResource() > SizeOfResource() > LoadResource() > LockResource() >
FreeLibrary() > BeginUpdateResource() > UpdateResource() > EndUpdateResource()

뭐 이런 절차로 하려고 하는데 아무리해도 UpdateResource() 여기서 적용이 안되는거다..
GetLastError()를 찍어봐도 문제가 없고...! LoadResource(), LockResource() 이걸로 리소스도 잘 가져오는데!
아놔~! 뭐가 문젠지 한참을 고민하다 보니,

LoadLibrary([Path]) > FreeLibrary() 이렇게 하고 구동한 프로그램이 종료될때까지 [Path]가 제대로 지워지지

않는 문제가 있는거다.
원인은... LoadLibrary([Path]) 이거다. 요넘은.. .

LoadLibrary([Path])  이렇게 열면... 열어서 쓰는거 까지 좋은데 FreeLibrary() 이걸로 잘(?) 안닫힌다.

이 후에 수정작업은 먹통이되버린다. (UpdateResource()등등)

.DLL만 잘 불러오게 하는 그런게(?) 있나부다.
msdn에는 .EXE에는 쓰지마라 이런말은 없고 블라블라~~

암튼, 요렇게 하면 된다.

hModule := LoadLibraryEx([Path], 0, LOAD_LIBRARY_AS_DATAFILE);

....
....
FreeLibrary(hModule)

이렇게 하면 해제 잘되서 이 후에 리소스 수정작업도 잘된다~

끝.
2012/10/04 22:10 2012/10/04 22:10