Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
한글Description을Copy로잘라올때깨지는문제
코드의 설명부분을 쿼리해서 Display할 때는
Copy를 써서 20자리만 잘라옵니다.
한글이 20자리에 걸리면 □이렇게 깨져서 출력됩니다.
깨지지않고 안전하게 잘라오는 방법을 알려주십시오.
1
COMMENTS
김영대
•
1999.12.16 23:03
남효숙 wrote:
> 코드의 설명부분을 쿼리해서 Display할 때는
> Copy를 써서 20자리만 잘라옵니다.
> 한글이 20자리에 걸리면 □이렇게 깨져서 출력됩니다.
> 깨지지않고 안전하게 잘라오는 방법을 알려주십시오.
만약 70바이트 짜리 주소필드의 내용을 하나는 30바이트 나머지
하나는 40바이트로 분리하여 주소를 2줄로 인쇄할경우가 있습니다
그런데 copy() 를 써서 문자열의 앞부분 30바이트를 자르면
영문은 상관없지만 한글의 경우는 30번째가 한글의 반쪽이면
깨지게 됩니다
아래 Get_KoreanCharPos 가 이를 판단하는 함수이며 예제를 포함
했습니다
function Get_KoreanCharPos(letter: string; WishCnt: Integer): Integer;
var
i, k, msb: integer;
begin
if System.Length(letter) < WishCnt then
begin
Get_KoreanCharPos := -1;
System.Exit;
end;
msb := 0;
for i := 1 to WishCnt do
if (Integer(letter[i]) and Integer($80)) = Integer($80) then
Inc(msb);
if (msb mod 2) = 0 then {'$80'인것이 짝수개이면 완성된 한글문장}
Get_KoreanCharPos := WishCnt
else
Get_KoreanCharPos := WishCnt - 1;
end;
이를 호출하여 사용하는 예제입니다
{주소를 분리}
i := Get_KoreanCharPos(Query1.FieldByName('ADDR').AsString, 30);
if i = -1 then
begin
QRL_addr1.Caption := Query1.FieldByName('ADDR').AsString;
QRL_addr2.Caption := '';
end
else
begin
QRL_addr1.Caption := Copy(Query1.FieldByName('ADDR').AsString,1,i);
QRL_addr2.Caption := Copy(Query1.FieldByName('ADDR').AsString,i+1,40);
end;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
수퍼맨
•
1999.12.16 22:30
1
COMMENTS
/
0
LIKES
버튼 클릭 검사
혀노
•
1999.12.16 23:53
질문이 무슨내용인지 잘 몰라서요,, 그냥 참고하세요 스피드 버튼의 프러퍼티엔 tag가 있거든요,,그걸 사...
초보자
•
1999.12.16 22:22
1
COMMENTS
/
0
LIKES
stored procedure 도 함수처럼 리턴할 수 있나요?
신호성
•
1999.12.16 23:14
초보자 wrote: > SQL Server6.5에 스토어드프로시져를 만들었습니다. > 두가지 질문입니다. > > 첫째,...
박정일
1999.12.16 21:30
0
COMMENTS
/
0
LIKES
CRC 검사 루틴
송수현
•
1999.12.16 21:00
2
COMMENTS
/
0
LIKES
SQL로 처리된 값을 Label에 넣고싶은데요??
김명석
•
1999.12.16 21:41
송수현 wrote: > 안녕하세요 ㅡ.ㅡ;; 저번에 가르쳐 주신건데 또 한가지 문제가 생겼어요 꾸벅~! > With ...
최수춘
•
1999.12.16 22:47
> 송수현 wrote: > > 안녕하세요 ㅡ.ㅡ;; 저번에 가르쳐 주신건데 또 한가지 문제가 생겼어요 꾸벅~! > >...
남효숙
•
1999.12.16 20:59
1
COMMENTS
/
0
LIKES
한글Description을Copy로잘라올때깨지는문제
코드의 설명부분을 쿼리해서 Display할 때는 Copy를 써서 20자리만 잘라옵니다. 한글이 20자리에 걸리면 □이렇게 깨져서 출력됩니다. 깨지지않고 안전하게 잘라오는 방법을 알려주십시오.
김영대
•
1999.12.16 23:03
남효숙 wrote: > 코드의 설명부분을 쿼리해서 Display할 때는 > Copy를 써서 20자리만 잘라옵니다. > ...
Sunni
•
1999.12.16 20:55
1
COMMENTS
/
0
LIKES
[긴급] 퀵리포트에서 본문 중앙에 선 그리기...
김영대
•
1999.12.16 23:07
Sunni wrote: > 안녕하세요... > 또 문제가 생겨서 이렇게 고수님들의 조언을 구합니다. > > 제가 이...
RyanYun
•
1999.12.16 20:42
2
COMMENTS
/
0
LIKES
[API] Graphi Image 질문^^
김형동
•
2000.02.18 20:29
bitmap := TBitmap.Create; bitmap.Width := 640; bitmap.Height:= 480; bitmap.LoadFromFile('...
RyanYun
•
1999.12.17 20:04
API함수를 직접 사용하지 않고... 그리는 것은 Panel을 붙여서 해결(?) 했습니다. Panel이 4개가 필요하...
우경확
•
1999.12.16 20:36
1
COMMENTS
/
0
LIKES
TABLE에 LOCK가 걸려서 다른이가 쓰지 못해요..
이만재
•
2000.01.06 00:32
우경확 wrote: > DB를 AS400을 사용하고 있는데요.. > 델파이로 만든 프로그램을 가동시키면 다른 사람들...
송수현
•
1999.12.16 20:33
2
COMMENTS
/
0
LIKES
여러개의 edit중 한개를 활성화 하기??
클릭
•
1999.12.16 21:08
송수현 wrote: > 안녕하세요 맨날 질문만 하는 수혀니입니다. 꾸벅~! > 항상 그렇지만 제폭 쓰기가 정말 ...
김주석
•
1999.12.16 21:28
송수현 wrote: > 안녕하세요 맨날 질문만 하는 수혀니입니다. 꾸벅~! > 항상 그렇지만 제폭 쓰기가 정말 ...
클릭
•
1999.12.16 20:30
1
COMMENTS
/
0
LIKES
editbox에서 정렬방법
김영대
•
1999.12.17 01:08
클릭 wrote: > 너무 쉬운걸 물어봐서 고수님들이 화가나는거 아닌지 모르겠지만 > 저한테는 무지 어려운...
RyanYun
•
1999.12.16 20:30
1
COMMENTS
/
0
LIKES
[Component] DirectoryBox에서... 파일 폴더 구별...
김명석
•
1999.12.16 21:51
RyanYun wrote: > 안녕하세요 델전문가님...^^ > > 오늘 아침 천둥 번개도 치고 장난이 아니엇는데... ...
김원종
1999.12.16 20:23
0
COMMENTS
/
0
LIKES
[궁금]Delphi4.0 C/S path에 관하여
sun
1999.12.18 18:20
0
COMMENTS
/
0
LIKES
두개의 SubDetail밴드를 쓰고 각 밴드의 합을 구할려면..?
조효식
•
1999.12.16 19:55
2
COMMENTS
/
0
LIKES
인텍스가 깨지는 것을 예방/복구하는 방법
김광섭
•
1999.12.16 23:02
조효식 wrote: > 델파이3.0에 infopower를 사용해서 프로그램을 작성하였는데 자료의 추가/삭제가 > 빈번...
맨발의 청춘
•
1999.12.17 01:09
'인데스복구 유틸로는 제가 사용본 결과로 Dtutil32.exe ... ' 초보라서 그러는데 Dtutil32.exe 프로그램...
ParaOne
•
1999.12.16 19:36
1
COMMENTS
/
0
LIKES
mdb 화일을 ODBC를 사용하지 않고 연결하는 방법 ?
지나가다가
•
1999.12.17 01:53
ParaOne wrote: > 안녕하세요. > mdb을 이용하는 program을 개발중입니다. > 문제는 배포에 분제가 있어...
초보가
•
2000.11.13 10:09
1
COMMENTS
/
0
LIKES
파일이 지정된 패스에 존재하는지 알려면?
이정욱
•
2000.11.13 10:09
FileExists 라는 함수를 사용하세요. If FileExists('c:imsixfile.wav') then ...파일있다~ else ...파...
김일영
1999.12.16 19:26
0
COMMENTS
/
0
LIKES
Windows98 - Login 과정의 Trace를 하고 싶습니다.
남효숙
•
1999.12.16 19:06
1
COMMENTS
/
0
LIKES
기본프린터로 바로출력하기
이정욱
•
1999.12.16 21:02
Printer Canvas 에다 바로 써주시면 됩니다. Canvas의 사용법은 화면 Canvas와 동일합니다. 다만 그...
이대우
•
1999.12.16 18:50
1
COMMENTS
/
0
LIKES
컴포넌트 동적생성....
이정욱
•
1999.12.16 21:00
물론 입니다. 동적으로 생성을 했어도 이미 생성후에는 정적으로 생성한 컴포넌트와 마찬가지로 사용할 ...
박성훈
•
1999.12.16 18:49
1
COMMENTS
/
0
LIKES
파라독스멀티환경에서동시에편집할 때
신호성
•
1999.12.16 23:29
박성훈 wrote: > 파라독스를 세션으로 묶어서 pc2대를 붙였는데, 궁금한 점이 동시에 2대 이상의 pc가 > ...
남효숙
1999/12/16 20:59
Views
217
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 코드의 설명부분을 쿼리해서 Display할 때는
> Copy를 써서 20자리만 잘라옵니다.
> 한글이 20자리에 걸리면 □이렇게 깨져서 출력됩니다.
> 깨지지않고 안전하게 잘라오는 방법을 알려주십시오.
만약 70바이트 짜리 주소필드의 내용을 하나는 30바이트 나머지
하나는 40바이트로 분리하여 주소를 2줄로 인쇄할경우가 있습니다
그런데 copy() 를 써서 문자열의 앞부분 30바이트를 자르면
영문은 상관없지만 한글의 경우는 30번째가 한글의 반쪽이면
깨지게 됩니다
아래 Get_KoreanCharPos 가 이를 판단하는 함수이며 예제를 포함
했습니다
function Get_KoreanCharPos(letter: string; WishCnt: Integer): Integer;
var
i, k, msb: integer;
begin
if System.Length(letter) < WishCnt then
begin
Get_KoreanCharPos := -1;
System.Exit;
end;
msb := 0;
for i := 1 to WishCnt do
if (Integer(letter[i]) and Integer($80)) = Integer($80) then
Inc(msb);
if (msb mod 2) = 0 then {'$80'인것이 짝수개이면 완성된 한글문장}
Get_KoreanCharPos := WishCnt
else
Get_KoreanCharPos := WishCnt - 1;
end;
이를 호출하여 사용하는 예제입니다
{주소를 분리}
i := Get_KoreanCharPos(Query1.FieldByName('ADDR').AsString, 30);
if i = -1 then
begin
QRL_addr1.Caption := Query1.FieldByName('ADDR').AsString;
QRL_addr2.Caption := '';
end
else
begin
QRL_addr1.Caption := Copy(Query1.FieldByName('ADDR').AsString,1,i);
QRL_addr2.Caption := Copy(Query1.FieldByName('ADDR').AsString,i+1,40);
end;