# 찾아바꾸기 파라미터 초기화가 안됩니다.

**URL:** <https://forum.developer.hancom.com/t/topic/1226>\
**Category:** 한글 오토메이션\
**Created:** [1월 3, 2024, 2:56오전 UTC](https://forum.developer.hancom.com/t/topic/1226 "2024-01-03T02:56:07Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![bsobyD](https://avatars.discourse-cdn.com/v4/letter/b/edb3f5/32.png) [@bsobyD](https://forum.developer.hancom.com/u/bsobyD)\
**Post date:** [1월 3, 2024, 2:56오전 UTC](https://forum.developer.hancom.com/t/topic/1226/1 "2024-01-03T02:56:07Z")

</div>

찾아바꾸기를 여러차례 걸처서 진행하는데 파라미터값의 초기화가 이루어지지 않습니다.

무엇이 문제인지 정확하게는 모르겠습니다만, 상태값을 초기화가 안되서 폰트 모양을 바꾼 뒤 값을 바꿀 때 포트 모양이 안맞아서 안바뀌게 된다거나, 문단모양 때문에 안되거나 하는 등의 문제가 발생합니다.

한컴에서 찾아바꾸기를 보면 글자모양, 문단모양 등의 옵션을 끌 수 있게 되어 있는데  
파라미터 값을 초기화 하는 방법이 있을까요?

---

<div class="post-metadata">

**Author:** ![user16](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.developer.hancom.com/user16/32/785_2.png) [@user16](https://forum.developer.hancom.com/u/user16)\
**Post date:** [1월 3, 2024, 3:06오전 UTC](https://forum.developer.hancom.com/t/topic/1226/2 "2024-01-03T03:06:35Z")

</div>

사용하신 코드를 보여주시면 오류를 해결해 드리기 수월할 것 같습니다.  
기본적인 프로세스는, GetDefault 명령어로 모든 파라미터셋 아이템을 초기화하고, 필요에 따라 특정 아이템만 변경한 후, Execute를 실행해서 반영하는 구조입니다.

---

<div class="post-metadata">

**Author:** ![bsobyD](https://avatars.discourse-cdn.com/v4/letter/b/edb3f5/32.png) [@bsobyD](https://forum.developer.hancom.com/u/bsobyD)\
**Post date:** [1월 3, 2024, 7:44오전 UTC](https://forum.developer.hancom.com/t/topic/1226/3 "2024-01-03T07:44:56Z")

</div>

테스트 코드를 아래와 같이 달아봅니다.

```python
## 빈칸 표시하기
action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindString = " "
pset.ReplaceCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
action.Execute(pset.HSet)

## 빈칸 원복하기
action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
pset.FindString = " "
pset.ReplaceCharShape.ShadeColor = 2**32 - 1
action.Execute(pset.HSet)

## 다시 빈칸표시하기

action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindString = " "
pset.ReplaceCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
action.Execute(pset.HSet)

```

위에서 처음 시작하고 빈칸에 색을 넣는 걸 실행하고나서, 다시 원복시키는 코드를 돌렸습니다.  
그리고 다시 빈칸에 색을 넣으려고 하면 공백을 찾을 수 없게 됩니다.

---

<div class="post-metadata">

**Author:** ![ilco](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.developer.hancom.com/ilco/32/1213_2.png) [@ilco](https://forum.developer.hancom.com/u/ilco)\
**Post date:** [1월 3, 2024, 10:25오전 UTC](https://forum.developer.hancom.com/t/topic/1226/4 "2024-01-03T10:25:18Z")

</div>

아래와 같이 실행해 보시기 바랍니다.

```auto
# 음영 추가시
action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindString = " "
pset.FindCharShape.ShadeColor = 4294967295 # <-----------------
pset.ReplaceCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
pset.IgnoreMessage = True
action.Execute(pset.HSet)

```

```auto
# 음영 제거시
action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindString = " "
pset.FindCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
pset.ReplaceCharShape.ShadeColor = 4294967295
pset.IgnoreMessage = True
action.Execute(pset.HSet)

```

제 PC에서 테스트 화면은 아래와 같습니다.

![녹화_2024_01_03_19_24_46_146](https://us1.discourse-cdn.com/flex016/uploads/hancom_dev_forum/original/1X/b87f30e872423ac10dbc54ac3d66426376c37891.gif)

문제의 원인은, "빈칸 원복하기"를 실행하신 시점에, FindCharShape.ShadeColor가 지정되었는데,  
다음번 찾아바꾸기 실행시에도 해당 옵션(찾을 글자 모양)이 자동으로 활성화되기 때문입니다.

그래서 "다시 빈칸표시하기"를 실행하실 때 FindCharShape.ShadeColor = 4294967295를 필수로 지정해주셔야 합니다.

잘 해결되었기를 바랍니다.  
행복한 하루 되세요^^

=========  
이 문제와는 별개로^^;  
아래 코드처럼 action을 정의하지 않고 실행하셔도 무방합니다.  
참고해 주시기 바랍니다ㅎ

```auto
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindString = " "
pset.ReplaceString = "_"
pset.IgnoreMessage = 1
hwp.HAction.Execute("AllReplace", pset.HSet)

```

---

<div class="post-metadata">

**Author:** ![bsobyD](https://avatars.discourse-cdn.com/v4/letter/b/edb3f5/32.png) [@bsobyD](https://forum.developer.hancom.com/u/bsobyD)\
**Post date:** [1월 4, 2024, 1:38오전 UTC](https://forum.developer.hancom.com/t/topic/1226/5 "2024-01-04T01:38:51Z")

</div>

다시 리셋시키는 방법은 없는 걸까요?

글자모양을 다른 걸 지정하거나 하면 다 원복을 시켜야 하는 건가 싶어서요.  
이게 글자모양 설정이 켜져서 이런 것 같은데 어떻게 하면 끌 수 있을까요?

---

<div class="post-metadata">

**Author:** ![ilco](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.developer.hancom.com/ilco/32/1213_2.png) [@ilco](https://forum.developer.hancom.com/u/ilco)\
**Post date:** [1월 4, 2024, 4:31오후 UTC](https://forum.developer.hancom.com/t/topic/1226/6 "2024-01-04T16:31:57Z")

</div>

따로 리셋하는 명령어가 있는 건 아니지만,  
**GetDefault 라인을 빼고 실행하시면**  
pset이 현재값이 아닌 초기값 상태가 되어 있습니다.  
(나름의 리셋이라고 볼 수도 있겠네요^^;)

> 근데 개인적으로는 조금 코드가 길더라도  
> GetDefault를 쓰시는 방법을 추천하고 싶네요…

```auto
# 음영넣기
action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
pset.FindString = " "
pset.ReplaceCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
pset.IgnoreMessage = True
action.Execute(pset.HSet)

```

```auto
# 음영빼기
action = hwp.CreateAction("AllReplace")
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.FindString = " "
pset.FindCharShape.ShadeColor = hwp.RGBColor(123, 255, 123)
pset.ReplaceCharShape.ShadeColor = 4294967295
pset.IgnoreMessage = True
action.Execute(pset.HSet)

```

![녹화_2024_01_05_01_29_01_59](https://us1.discourse-cdn.com/flex016/uploads/hancom_dev_forum/original/1X/fa17e2eb5ef34f38306620df3a3cae6537b69bad.gif)
