|
목록에서 글자 제한 23이였음 ?>
질문게시판 - 반드시 검색을 하신 후 원하는 답변을 찾을 수 없을 때, 질문을 올려주세요. |
| Posted by 박종훈 | 2009-02-27 15:04:43, Hit : 4235 | |
|
|
|
01: Type SHELLEXECUTEINFO
02: cbSize As Long
03: fMask As Long
04: hwnd As Long
05: lpVerb As String
06: lpFile As String
07: lpParameters As String
08: lpDirectory As String
09: nShow As Long
10: hInstApp As Long
11: lpIDList As Long
12: lpClass As String
13: hkeyClass As Long
14: dwHotKey As Long
15: hIcon As Long
16: hProcess As Long
17: End Type
위는 비주얼베이직에서 SHELLEXECUTEINFO 라는 구조체를 선언한 겁니다.
그런데, 위의 명령어에서
5, 6, 7, 8, 12번재줄과 같이 String형으로 되어있는데,
문자잖아요? 그런게 구조체에 바로 문자를 집어넣는건 아닌것 같고,
따로 처리를 해야할것 같은데 말이죠.
어떻게 하면 창조에서 구조체에 문자를 넣을수 있습니까?
창조의 구조체함수로 그냥 문자를 집어넣는 건 아닌것 같고,
뭐 따로 처리를해서 넣어주는것 같은데.. 혹시 하실줄 아시는분ㅠㅠ 답변부탁합니다^^
메모리 할당도 해보고 lstrcpy 같은 API함수도 써보고 그랬는데, 도통 모르겠더라고요;;
메모리 할당한 다음에 그 할당한 곳에 문자를 넣고 할당한 메모리의 포인터를 넣어주는 건줄 알았는데, 글세 제가 잘못 짚었는지 잘 안되더라고요;;;;;
답변부탁드립니다ㅠㅠ
아참, 창조에서 사용하는 방법을 어쭤어보는 겁니다^^
|
|
|
김동민 2009-02-27 PM 3:52:03 |
|
|
|
음!? 구조체라면 그냥 이런 방법으로 하면 되지 않나요?
SHELLEXECUTEINFO.lpClass = "나는 문자열, 낄낄"
이걸 물어보신 게 아닌가 *ㅡ_-) ;; |
|
|
박종훈 2009-02-27 PM 4:16:29 |
|
|
|
아핫, 김동민님~ 제가 몇가지를 빼먹고 바로 글을 올려버렸네요^^;
창조에서 사용하는 방법을 말씀드린 거에요~
VB나, 다른 프로그래밍 언어라면 말씀하신대로 그냥 사용하면 될듯 한데,
창조에서 지상현님께서 제작하신 [구조체함수]를 이용해서 구조체에 문자를 넣으려고 하는데 어떻게 하는줄 몰라서요 ㅠㅠ
예를 들어 창조에서 구조체를 만들고 4바이트 지점에 문자를 입력한다고 할때
문자: 구조체;
구조체 := 구조체함수.구조체버퍼잡아(60);
구조체 := 구조체함수.구조체쓰기(구조체, "문자입력!!", 4);
이런식으로 직빵으로 구조체에 넣고자하는 문자를 사용하면 안되는것 같더라고요.
위와 같이 하면 넣고자 하는 문자가 길어지면 길어질수록 구조체버퍼잡아함수에서 할당한 구조체버퍼를 문자가 다 차지하고, 나머지 데이터가 들어갈 공간이 없어지잖아요ㅠㅠ(넣고자 하는 문자가 버퍼를 다 차지하게 되니;;)
어떻게 하면 창조의 구조체함수에서 문자를 넣을수 있을지 궁금해요 ㅠ
http://cugz.sjworks.net/bbs/zboard.php?id=pds_sc&no=631
위의 소스에서도 구조체함수를 사용하고 문자를 사용하는데요, 꼼수로;;;; lstrcpy함수를 이용해서 사용하는데 되더라고요;;;;
lstrcpy함수는 문자1과 문자2를 합쳐주는 함수고, 반환값으로 합쳐진문자의 포인터가 나오는데요, 이걸 이용해서 구조체에 문자를 넣긴 했는데, 잘한건지 모르겠네요;;;;;; |
|
|
박종훈 2009-02-27 PM 4:19:02 |
|
|
|
음.. 혹시..
String라고해도.. 실제로 문자가 들어가는 것이 아니라, 해당 문자가 있는 메모리주소를 넣는것이 아닐까요? 즉, 포인터를 사용하는거죠..
음, 그런데 확실한지 모르겠네요; |
|
|
김동민 2009-02-27 PM 5:11:00 |
|
|
|
흠, 일단 상현님께서 만드신 창조에서의 구조체 함수라는 것에
대해서도 전혀 알고있는 사항이 없고 ;;
어쨌든 관련된 소스들을 검토해보고 직접 한 번 해봐야
알 수 있을 것 같은데~
보다 원초적인 문제로 일단 집에있는 제 PC에
창조가 설치되어 있지를 않아서 *-_-)
주말에 할짓없음 창조나 깔아서 건드려 봐야겠습니다. |
|
|
박종훈 2009-02-27 PM 5:37:36 |
|
|
|
ㅋㅋㅋ 지상현님의 구조체함수에는 숫자를 다루는 함수만 있어요ㅠㅠ
예를 들어, 수를롱 같은경우, 창조에서의 실수형을 Long형으로 바꾸는 함수이고요, 그외 3개정도의 숫자의 형변환 함수가 있는데요.
문자는 어떻게 하는지 모르겠어요ㅠ |
|
|
지상현 2009-03-21 AM 6:05:20 |
|
|
|
String은 포인터입니다.
그래서 그냥 4바이트 숫자를 넣습니다.
물론 이때 넣는 숫자는 포인터로써 실제 문자열 데이터가 들어있는 적절한 데이터의 주소여야겠죠.
창조에서 어떻게 해결할 수 있는 방법이 없지만...
아마도 lstrcat 함수 (두 문자열을 합치는 API)를 쓰면 될지도 모르겠네요.
lstrcat(A, B) 라고 적으면
A := A + B; 이런 식으로 동작하는 건데,
반환 값으로 문자열 A의 주소를 돌려줍니다.
그래서 B에 ""를 넣고 A만의 주소를 구하는... 뭐 그런 꽁수죠. |
|
|
지상현 2010-06-24 PM 9:08:44 |
|
|
|
앞서 설명한 방법은 예전에 누군가 VB에서 쓴 방법인데
VB에서 저 꽁수가 먹히는 이유는 문자열이 static한 데이터로 남아있고, _lstrcat 함수로 그 주소를 얻겠다는 의도인데... 좀 위험한 방법 같네요.
VB에선 VarPtr 같은걸 쓰면 되구요.
창조에서는 메모리 할당해서 문자열 복사해 넣는 수 밖에 없을 것 같네요. |
|
|
박종훈 2010-06-27 PM 11:57:04 |
|
|
|
예전에 말씀하셨던 lstrcat 함수로 어떻게 하려고 해보니까 잘 안되더라고요ㅠ
지금은 고3인 관계로-_-;;(사실 귀찮다는 이유가 더 크지만.)
기회가 되면 메모리 할당해서 문자열 넣고 그 주소 얻어서 넣는 방법을 해보겠습니다~ |
|
|
지우개 Expert 3.0 제작자 : 천호성 님 [LINK] |
|
|
|
대박로또2005 제작자 : 최재일 님 [LINK] |
|
|
1 | 박종훈 님 | 15292 점 | |
2 | 지상현 님 | 8809 점 | |
3 | 손상진 님 | 7389 점 | |
4 | 권선중 님 | 6061 점 | |
5 | 이진백 님 | 5174 점 | |
|
|
|
가입일 | 닉네임 |
05/31 | 김동률 |
03/31 | 홍형기 |
09/01 | o00pp99oo |
12/27 | 이재민 |
11/20 | 이희철 |
|
|
|
|
. |
. |
. |
|