VC++.NET(2003)の環境でプログラムを行っているのですが、
VB6.0−ActiveXDLL内の関数の引数(String型)にVCからはLPCSTR型で
データを渡そうと思っております。
しかし、VCでは文字列をchar型で扱っているため、LPCSTR型に渡すために
具体的にどうコーディングしていいのか分からず困っております。
char ok_ng[30];
LPCSTR tmp;
strcpy(ok_ng, "OK");
// char → LPCSTRの渡し方が分かりません。
プログラムの経験も浅いため、ご教授の程よろしくお願いします。
LPCSTRはconst char* なので ok_ngをそのまま渡せるんじゃないでしょうか?
yamaさん、ありがとうございます。
ですが、文字列のコピーを行う
strcpy(ok_ng, "OK");
strcpy(tmp, ok_ng);
としても「1番目の引数をLPCSTRからchar*に変換できません」
というエラーが出てしまいます。
strcpy以外のコマンドがあるのでしょうか?
>strcpy(tmp, ok_ng);
tmpって何者でしょうか?
>「1番目の引数をLPCSTRからchar*に変換できません」
のメッセージから第一引数のtmpは"変更不可能"にも係わらず、値を入れようとしている
ということです。
もしかして CString に入れたいとか?
それならstrcpy使わないでもそのまま代入できるはずだけど。
>tmpって何者でしょうか?
LPCSTR型のtmpです。
>もしかして CString に入れたいとか?
CStringに入れようとは思っておりません。
ただ単純にchar型の文字列をLPCSTR型のポインタにコピーするような
関数はないのでしょうか?という内容です。
「文字列をポインタにコピー」というのがよくわかりませんが、
tmp = ok_ng;
ではだめなんでしょうか。
これでtmpの指す内容はok_ngの中身(つまり"OK")になるはずですが。
よくわからないけど
>LPCSTR型のポインタにコピーするような
とは最終的に何するために使うのでしょうか?
最初にyamaさんがおっしゃっていますが
LPCSTR tmp = ok_ng;
で出来るはずですけど。
ただし、このtmpを戻り値として返したりすると、tmpの指す先のok_ngが
ローカル変数のため不正なアクセスになってしまいますので注意が必要です。
単純に「tmp = ok_ng;」でいいんですね。
難しく考えてしまっていました。勉強になりました。
yamaさん、ありがとうございました。
すみません、掲示板に記載中にBlueさんからのコメントがあったようです。
>ただし、このtmpを戻り値として返したりすると、tmpの指す先のok_ngが
>ローカル変数のため不正なアクセスになってしまいますので注意が必要です。
上記のこと、気を付けたいと思います。
Blueさん、ありがとうございました。
ツイート | ![]() |