CAFE

[6.0]Tip & Tech [인기]

LSet/RSet의 활용법

작성자냐냐냐|작성시간08.08.03|조회수531 목록 댓글 6

뭔가 근사해 보이는 LSet/RSet 키워드...

 

하지만 실제로 사용해보니 뭔가 어정쩡하네요.

 

사용법은 Set 키워드랑 동일하고 단지 문자열과 구조체를 대상으로 할 뿐입니다.

 

문자열의 경우는...

 

대상 문자열을 공백으로 초기화하고 대상 문자열에다 위치시키고 싶은 문자열을 좌우 정렬을 해서 위치시키는군요.

 

이를테면... Left$(문자열 & Space$(문자열길이),문자열길이) 또는 Right$(Space$(문자열길이) & 문자열,문자열길이)

과 같은 형태를 대체할 수 있는 정도인 것 같네요.

 

구조체를 대상으로 할 경우는  구조가 다른 구조체끼리 값을 일괄적으로 치환시킬 수 있습니다.

 

다만, 주의할 사항은...

 

구조체에 배열을 선언할 경우

 

A(10) as integer

A(1 to 10) as integer

 

같은 형태는 되지만

 

A() as integer

 

같은 형태는 안됩니다.

 

 

그리고...

 

Type a

a as byte

b as integer

c as byte

End Type

 

Type b

a as integer

b as integer

End Type

 

위와 같은 형태의 경우 값이 올바르게 치환되지 않습니다. b.a를 a에 치환시킬 경우 a.a와 a.b에 걸치게 되는데 a.a와 a.b의 길이의 합이 3바이트가 되기 때문에 일시적으로 a.a를 2바이트로 인식해서 값을 치환한 뒤에 상위 8비트를 버리고 a.a에 대입시킵니다.

 

그러므로 byte형을 쓸 경우 인접한 byte형 길이의 합이 짝수가 되도록 맞춰줘야 합니다.

 

어쨌거나 C언어의 공용체의 기능을 흉내내는 용도로는 써먹을 수 있겠네요. CopyMemory Api와 같은 무식한 메모리 복사와는 거리가 멉니다. 두 구조체의 맴버변수의 데이터형을 비교해 가면서 메모리 복사를 수행하니까요.

 

그리고 구조체에 대해서는 LSet만을 사용할 수 있다는 점도 주의합시다. 어차피 비베에서 알려주긴 하지만...

 

 

지금까지 알아본 결과 LSet/RSet은 계륵 같은 존재네요. 버리자니 아깝고 쓰자니 딱히 용도가 안 떠오르는...

 

텍스트 에디터의 좌우정렬 기능같은거 구현할때나 서로 다른 구조체끼리 값을 치환하는 형태의 경우나 유용할 것 같네요. 메모리 복사라고 해봐야 용도가 극히 한정적인 것 같네요.

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자수학쟁이 | 작성시간 08.08.04 MsgBox Format$("test", "!@@@@@@@@@@@@") ' 왼쪽 정렬
  • 작성자수학쟁이 | 작성시간 08.08.04 MsgBox Format$("test", "@@@@@@@@@@@@") ' 오른쪽 정렬
  • 작성자바 람남 | 작성시간 10.12.27 감사합니다
  • 작성자바 람남 | 작성시간 10.12.27 감사합니다
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니다
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼