2016年7月8日星期五

20160708共通メソッドで値が戻ってこない

20160708
新規したの関数で値が戻ってこないので、調べたところ、
内部では正しく値が取得できていましたが、
引数に戻す値がセットできないかたちのようなので、
下記のように変更したところ値が返ってくる世になりました。
メソッドは省略に記載しています。
※※修正前※※--------------------------------------
Public Boolint Getinfomation
(
 char *size,
 char *material
)
{
 size = GetIniFile(inifile, key1);
 material = GetIniFile(inifile, key2);
 return TRUE;
}
※※修正前※※--------------------------------------
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
※※修正後※※--------------------------------------
Public Boolint Getinfomation
(
 char *p_size,
 char *p_material

)
{
 char *size, *material;

 size = GetIniFile(inifile, key1);
 material = GetIniFile(inifile, key2);

 // 引数のcharポインターにメモリの内容をコピー
 if (size && p_size) strcpy(p_size, size);
 if (material && p_material) strcpy(p_material, material);

 return TRUE;
}
※※修正後※※--------------------------------------
以上の問題に対して、よく分かてなくています。
C言語を学んでいくと、納得できていけるかもしれません。
C言語でのね渡しとポインタ渡しと参照渡しについては
まだまだですね。
もし、理解できれば、また本文章を更新します。
私も楽しみます。
勉強しかないなあ!!!

たぶん、 GetIniFile(inifile, key1);でアドレスを変更してしまった。
安全性のために、引数のアドレスはそのまま保留して、
取得された値でけを引数のメモリにコピーします。
strcpyは値のみをコピーします。

没有评论:

发表评论